一般CURL 抓网页的方法, 是一页一页抓, 假设要抓 4页, 所费时间各别是 5,10,7,5 秒, 那全部总合所花的时间就是 5 + 10 + 7 + 5 = 27 秒。

若能同时间去抓取多个网页, 所花费的时间 5,10,7,5 秒, 全部总合所花的时间是 10 秒。(花费最多时间的秒数)

于JavaScript 可使用 AJAX 的 async(YAHOO.util.Connect.asyncRequest)来达成, 于 PHP 可以用 CURL 来达成此 Multi-Threading 的效果。

程序(async.php)

以下为引用的内容:

function async_get_url($url_array, $wait_usec = 0)

{

if (!is_array($url_array))

return false;

$wait_usec = intval($wait_usec);

$data    = array();

$handle  = array();

$running = 0;

$mh = curl_multi_init(); // multi curl handler

$i = 0;

foreach($url_array as $url) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return don't print

curl_setopt($ch, CURLOPT_TIMEOUT, 30);

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 302 redirect

curl_setopt($ch, CURLOPT_MAXREDIRS, 7);

curl_multi_add_handle($mh, $ch); // 把 curl resource 放进 multi curl handler 里

$handle[$i++] = $ch;

}

/* 执行 */

do {

curl_multi_exec($mh, $running);

if ($wait_usec > 0) /* 每个 connect 要间隔多久 */

usleep($wait_usec); // 250000 = 0.25 sec

} while ($running > 0);

/* 读取资料 */

foreach($handle as $i => $ch) {

$content  = curl_multi_getcontent($ch);

$data[$i] = (curl_errno($ch) == 0) ? $content : false;

}

/* 移除 handle*/

foreach($handle as $ch) {

curl_multi_remove_handle($mh, $ch);

}

curl_multi_close($mh);

return $data;

}

?>

使用

以下为引用的内容:

$urls = array('http://example1.com', 'http://example2.com');

print_r(async_get_url($urls)); // [0] => example1, [1] => example2

?>

测试

sleep.php # 看时间延长取得的效果

以下为引用的内容:

sleep(intval($_GET['time']));

echo intval($_GET['time']);

?>

以下为引用的内容:

$url_array = array(

'http://example.com/sleep.php?time=5',

'http://example.com/sleep.php?time=10',

'http://example.com/sleep.php?time=7',

'http://example.com/sleep.php?time=5',

);

print_r(async_get_url($url_array));

// 总花费时间会是 10 秒, 并印出 [0] => 5, [1] => 10, [2] => 7, [3] => 5

?>

php抓取多个网页合并,PHP 使用 CURL 同步抓取多个网页相关推荐

  1. stata抓取html,(5)详解 stata 爬虫抓取网页上的数据 part 1

    *案例:抓取 http://www.tjcn.org 中国统计信息网上前50页(每页包含20个市的数据)的1000个地区的GDP数据.使用stata版本为 stata13,与12版本和14版本都不兼容 ...

  2. php curl 下载网页,php 通过cURL函数抓取网页、下载网页的简单示例

    这篇文章主要为大家详细介绍了php 通过cURL函数抓取网页.下载网页的简单示例,具有一定的参考价值,可以用来参考一下. php通过cURL函数抓取和下载网页,感兴趣的小伙伴,下面一起跟随512笔记的 ...

  3. python爬取网页停止_如何使用Python抓取雪球网页?

    我想使用beautifulsoup或者其他的python包 抓取 雪球网页上面的一些组合,因为雪球网的组合持仓变动的时候,雪球网不会给提示,比如说,我想抓取这个http://xueqiu.com/P/ ...

  4. php取网页内容乱码,如何解决php用file_get_contents方法抓取网页数据出现乱码

    我们都经常碰到在抓取数据时碰到乱码现象,让人崩溃.今天主要和大家探讨如何解决php用file_get_contents方法抓取网页数据出现乱码的问题,需要的朋友可以参考下,希望能帮助到大家.下面跟随小 ...

  5. python数据抓取工具_【重磅开源】Hawk-数据抓取工具:简明教程

    Hawk: Advanced Crawler& ETL tool written in C#/WPF 1.软件介绍 Hawk3已经发布,本文的很多信息已经不完整或过期,所有更新信息和下载地址都 ...

  6. 【Python爬虫系列教程 11-100】Python网络爬虫实战:最简单的Pandas 中的read_html一行代码爬取网页表格型数据,就可以爬取虎扑体育NBA球员信息

    文章目录 爬取对象 分析 实现代码 爬取对象 虎扑是一个认真而有趣的社区,每天有众多JRs在虎扑分享自己对篮球.足球.游戏电竞.运动装备.影视.汽车.数码.情感等一切人和事的见解,热闹.真实.有温度. ...

  7. python爬取boss直聘招聘信息_Python爬虫实战-抓取boss直聘招聘信息

    Python Python开发 Python语言 Python爬虫实战-抓取boss直聘招聘信息 实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Pyth ...

  8. 【爬虫】使用beautifulsoup、requests爬取网页上的图片;循环爬取上市公司高管信息

    **声明:本篇博文只用于对于爬虫技术的学习交流.如果侵犯到相关网站利益,请联系我删除博文.造成不便还请见谅.希望各位同学在学习的时候不要过于频繁的去请求. 最近博主在学习前端开发和网页相关的东西,这些 ...

  9. qt爬取网页信息_豆瓣TOP250数据爬取

    一.问题描述 用python爬取网页数据是现在流行的一种快速获取数据的方法,简单快捷.最近小编通过教程学习完成了豆瓣TOP250数据的爬取.下面就简单介绍一下如何用python程序实现豆瓣网页信息的爬 ...

最新文章

  1. 大型分布式网站架构设计与实践 笔记
  2. Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
  3. 攻防世界-REverse-tt3441810(超简单秒懂)
  4. 迪杰斯特拉--- 模板(求最短路径/输出路径/所有路径都可以走的做法)
  5. php要输出为空值怎么写,thinkphp3.0基础模板引擎变量为空时输出默认值
  6. 物联网搜集大量数据协助制定业务策略 成为银行业竞争利器
  7. 广播接收者android,电话拦截广播,电话接收者demo
  8. 如果你的年龄在35~55岁之间,一定要看这张图
  9. 情感分析入门[2]-一些数学工具
  10. CentOS6.5 安装Tomcat6
  11. c语言程序流程图模板word,《流程图模板》word版.doc
  12. UDA/语义分割-ColorMapGAN: Unsupervised Domain Adaptation for Semantic Segmentation Using Color Mapping G
  13. Linux架设代理服务器
  14. Google Paly 开发者账号需要注意的小细节
  15. 6.Java设计模式之设配器模式
  16. 图扑 TopLink 边缘组态
  17. kdj超卖_最全的KDJ(超买超卖)指标实用技巧(图解)
  18. 强烈推荐 10 款 Mac 软件!
  19. 王垠:对 Rust 语言的分析
  20. 工作中的完美主义 感悟_如何克服设计中的完美主义

热门文章

  1. Android之px 与 dp, sp换算公式
  2. win7升级win10正式版_win7告退在即,如何升级到win10?
  3. 这五部关于宇宙的神级纪录片,带你探索未知的外太空世界
  4. 娱乐项目和女朋友哪个重要?
  5. 你根本想象不到,学霸到底经历过什么
  6. 区块链、自动驾驶、人工智能鏖战开始 谁将成为下一个风口?
  7. python 内存数据库下载,Python 文件存储和数据库
  8. java 继承 子类 实例化_关于Java继承中父类和子类构造函数的问题
  9. java数组深拷贝和浅拷贝_java中的深拷贝与浅拷贝(值类型 vs 引用类型)
  10. python中random什么意思_python中的random