php抓取多个网页合并,PHP 使用 CURL 同步抓取多个网页
一般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 同步抓取多个网页相关推荐
- stata抓取html,(5)详解 stata 爬虫抓取网页上的数据 part 1
*案例:抓取 http://www.tjcn.org 中国统计信息网上前50页(每页包含20个市的数据)的1000个地区的GDP数据.使用stata版本为 stata13,与12版本和14版本都不兼容 ...
- php curl 下载网页,php 通过cURL函数抓取网页、下载网页的简单示例
这篇文章主要为大家详细介绍了php 通过cURL函数抓取网页.下载网页的简单示例,具有一定的参考价值,可以用来参考一下. php通过cURL函数抓取和下载网页,感兴趣的小伙伴,下面一起跟随512笔记的 ...
- python爬取网页停止_如何使用Python抓取雪球网页?
我想使用beautifulsoup或者其他的python包 抓取 雪球网页上面的一些组合,因为雪球网的组合持仓变动的时候,雪球网不会给提示,比如说,我想抓取这个http://xueqiu.com/P/ ...
- php取网页内容乱码,如何解决php用file_get_contents方法抓取网页数据出现乱码
我们都经常碰到在抓取数据时碰到乱码现象,让人崩溃.今天主要和大家探讨如何解决php用file_get_contents方法抓取网页数据出现乱码的问题,需要的朋友可以参考下,希望能帮助到大家.下面跟随小 ...
- python数据抓取工具_【重磅开源】Hawk-数据抓取工具:简明教程
Hawk: Advanced Crawler& ETL tool written in C#/WPF 1.软件介绍 Hawk3已经发布,本文的很多信息已经不完整或过期,所有更新信息和下载地址都 ...
- 【Python爬虫系列教程 11-100】Python网络爬虫实战:最简单的Pandas 中的read_html一行代码爬取网页表格型数据,就可以爬取虎扑体育NBA球员信息
文章目录 爬取对象 分析 实现代码 爬取对象 虎扑是一个认真而有趣的社区,每天有众多JRs在虎扑分享自己对篮球.足球.游戏电竞.运动装备.影视.汽车.数码.情感等一切人和事的见解,热闹.真实.有温度. ...
- python爬取boss直聘招聘信息_Python爬虫实战-抓取boss直聘招聘信息
Python Python开发 Python语言 Python爬虫实战-抓取boss直聘招聘信息 实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Pyth ...
- 【爬虫】使用beautifulsoup、requests爬取网页上的图片;循环爬取上市公司高管信息
**声明:本篇博文只用于对于爬虫技术的学习交流.如果侵犯到相关网站利益,请联系我删除博文.造成不便还请见谅.希望各位同学在学习的时候不要过于频繁的去请求. 最近博主在学习前端开发和网页相关的东西,这些 ...
- qt爬取网页信息_豆瓣TOP250数据爬取
一.问题描述 用python爬取网页数据是现在流行的一种快速获取数据的方法,简单快捷.最近小编通过教程学习完成了豆瓣TOP250数据的爬取.下面就简单介绍一下如何用python程序实现豆瓣网页信息的爬 ...
最新文章
- 大型分布式网站架构设计与实践 笔记
- Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
- 攻防世界-REverse-tt3441810(超简单秒懂)
- 迪杰斯特拉--- 模板(求最短路径/输出路径/所有路径都可以走的做法)
- php要输出为空值怎么写,thinkphp3.0基础模板引擎变量为空时输出默认值
- 物联网搜集大量数据协助制定业务策略 成为银行业竞争利器
- 广播接收者android,电话拦截广播,电话接收者demo
- 如果你的年龄在35~55岁之间,一定要看这张图
- 情感分析入门[2]-一些数学工具
- CentOS6.5 安装Tomcat6
- c语言程序流程图模板word,《流程图模板》word版.doc
- UDA/语义分割-ColorMapGAN: Unsupervised Domain Adaptation for Semantic Segmentation Using Color Mapping G
- Linux架设代理服务器
- Google Paly 开发者账号需要注意的小细节
- 6.Java设计模式之设配器模式
- 图扑 TopLink 边缘组态
- kdj超卖_最全的KDJ(超买超卖)指标实用技巧(图解)
- 强烈推荐 10 款 Mac 软件!
- 王垠:对 Rust 语言的分析
- 工作中的完美主义 感悟_如何克服设计中的完美主义
热门文章
- Android之px 与 dp, sp换算公式
- win7升级win10正式版_win7告退在即,如何升级到win10?
- 这五部关于宇宙的神级纪录片,带你探索未知的外太空世界
- 娱乐项目和女朋友哪个重要?
- 你根本想象不到,学霸到底经历过什么
- 区块链、自动驾驶、人工智能鏖战开始 谁将成为下一个风口?
- python 内存数据库下载,Python 文件存储和数据库
- java 继承 子类 实例化_关于Java继承中父类和子类构造函数的问题
- java数组深拷贝和浅拷贝_java中的深拷贝与浅拷贝(值类型 vs 引用类型)
- python中random什么意思_python中的random