码迷,mamicode.com
首页 > 编程语言 > 详细

简单的使用php多线程抓取网页

时间:2014-09-25 19:37:17      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   使用   ar   for   

PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,受限于php语言本身不支持多线程,所以开发爬虫程序效率并不高,这时候往往需 要借助Curl Multi Functions 它可以实现并发多线程的访问多个url地址。既然 Curl Multi Function如此强大,能否用 Curl Multi Functions 来写并发多线程下载文件呢,当然可以,下面给出我的代码:

<?php
$urls = array(  
 ‘http://www.sina.com.cn/‘,  
 ‘http://www.sohu.com/‘,  
 ‘http://www.163.com/‘ 
); // 设置要抓取的页面URL  
     
$save_to=‘/test.txt‘;   // 把抓取的代码写入该文件   
   
$st = fopen($save_to,"a");  
$mh = curl_multi_init();   
   
foreach ($urls as $i => $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);
?>

 

简单的使用php多线程抓取网页

标签:style   blog   http   color   io   os   使用   ar   for   

原文地址:http://www.cnblogs.com/xiashuo-he/p/3993265.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!