php实现多线程抓取网页

php实现多线程抓取网页

ID:34707953

大小:51.66 KB

页数:3页

时间:2019-03-09

php实现多线程抓取网页_第1页
php实现多线程抓取网页_第2页
php实现多线程抓取网页_第3页
资源描述:

《php实现多线程抓取网页》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

2、252627$url){    $conn[$i]=curl_i

3、nit($url);    curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.0)");    curl_setopt($conn[$i],CURLOPT_HEADER,0);    curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);    curl_setopt($conn[$i],CURLOPT_FILE,$st);//设置将爬取的代码写入文件    curl_multi_a

4、dd_handle($mh,$conn[$i]);  }//初始化       do {    curl_multi_exec($mh,$active);  }while ($active); //执行       foreach ($urls as $i =>$url){    curl_multi_remove_handle($mh,$conn[$i]);  282930313233  curl_close($conn[$i]);  }//结束清理       curl_multi_close($mh);  fclose($st);?>

5、代码2:将获得的代码先放入变量,再写入某个文件1234567891011121314151617181920212223242526272829303132333435

6、init();  foreach ($urls as $i =>$url){    $conn[$i]=curl_init($url);    curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.0)");    curl_setopt($conn[$i],CURLOPT_HEADER,0);    curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);    curl_setopt(

7、$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($

8、st,$data); //将字符串写入文件。当然,也可以不写入文件,比如存入数据库  }//获得数据变量,并写入文件     foreach ($urls as $i =>$ur

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。