
爬取各种页面:
//page 1 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,PAGE_1_URL); curl_exec($ch); curl_close($ch); //然后爬取 page 2 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,PAGE_2_URL); curl_exec($ch); curl_close($ch); //然后爬取 page 3 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,PAGE_2_URL); curl_exec($ch); curl_close($ch); 可不可以在代码开头写一个$ch = curl_init(); 所有页面爬完了再 curl_close($ch)?这样做是不是效率更高?
1 DavidNineRoc 2019-05-15 09:48:35 +08:00 这么简单的问题张口就来, 难不成你写一段代码不多块. 想要效率高, curl 提供多线程.多个执行不需要引用返回值考虑用: curl_multi_exec |
2 benhuang1024 2019-05-15 12:42:51 +08:00 可以使用 Guzzle 软件包,进行异步,并发都挺不错 单纯的单页或指定部分页面爬虫,毛遂自荐下 [MasterCloner/Cornerstone]( https://github.com/MasterCloner/Cornerstone) |
3 micookie 2019-05-15 14:11:15 +08:00 Guzzle +1 建议放弃 curl |
4 ritaswc 2019-05-15 14:54:36 +08:00 放弃 curl 吧,时间宝贵 |
5 NjcyNzMzNDQ3 2019-05-15 16:51:39 +08:00 1.效率不会高。 2.cli 情况下运行会内存溢出,应该一个请求就 close。 3.curl 如果单进程单线程的话慢的很,可以试试 3L 的。 |