爬取各种页面:
//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 的。 |