时时商务社区

标题: PHP使用CURL实现多线程抓取网页 [打印本页]

作者: bewin83    时间: 2018-2-14 05:46

            PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,受限于php语言本身不支持多线程,所以开发爬虫程序效率并不高,这时候往往需 要借助Curl Multi Functions 它可以实现并发多线程的访问多个url地址。既然 Curl Multi Function如此强大,能否用 Curl Multi Functions 来写并发多线程下载文件呢,当然可以,下面给出我的代码:
代码1:将获得的代码直接写入某个文件
$url) {  
$conn[$i] = curl_init($url);  
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");  
curl_setopt($conn[$i], CURLOPT_HEADER ,0);  
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);  
curl_setopt($conn[$i], CURLOPT_FILE,$st); // 设置将爬取的代码写入文件  
curl_multi_add_handle ($mh,$conn[$i]);  
} // 初始化  
   
do {  
curl_multi_exec($mh,$active);  
} while ($active); // 执行  
   
foreach ($urls as $i => $url) {  
curl_multi_remove_handle($mh,$conn[$i]);  
curl_close($conn[$i]);  
} // 结束清理  
   
curl_multi_close($mh);  
fclose($st);
?>
代码2:将获得的代码先放入变量,再写入某个文件
$url) {  
$conn[$i] = curl_init($url);  
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");  
curl_setopt($conn[$i], CURLOPT_HEADER ,0);  
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);  
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,true); // 设置不将爬取代码写到浏览器,而是转化为字符串  
curl_multi_add_handle ($mh,$conn[$i]);  
}  
  
do {  
curl_multi_exec($mh,$active);  
} while ($active);  
   
foreach ($urls as $i => $url) {  
$data = curl_multi_getcontent($conn[$i]); // 获得爬取的代码字符串  
fwrite($st,$data); // 将字符串写入文件。当然,也可以不写入文件,比如存入数据库  
} // 获得数据变量,并写入文件  
  
foreach ($urls as $i => $url) {  
curl_multi_remove_handle($mh,$conn[$i]);  
curl_close($conn[$i]);  
}  
  
curl_multi_close($mh);  
fclose($st);  
?>
以上所述就是本文的全部内容了,希望大家能够喜欢。
            
            
您可能感兴趣的文章:
  • PHP中使用CURL伪造来路抓取页面或文件
  • php下通过curl抓取yahoo boss 搜索结果的实现代码
  • PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
  • 使用PHP curl模拟浏览器抓取网站信息
  • php使用curl抓取qq空间的访客信息示例
  • php使用curl和正则表达式抓取网页数据示例
  • php利用curl抓取新浪微博内容示例
  • PHP curl实现抓取302跳转后页面的示例
  • 使用php方法curl抓取AJAX异步内容思路分析及代码分享
  • PHP curl 抓取AJAX异步内容示例
  • php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
  • php通过curl添加cookie伪造登陆抓取数据的方法
  • php使用curl代理实现抓取数据的方法
            




    欢迎光临 时时商务社区 (http://bbs.4435.cn/) Powered by Discuz! X3.2