爬取网页数据php,不到40行代码教你如何利用php高效快速的爬取10w+网页数据
前几天看了一下swoole,今天找到了使用场景,就简单写一个demo
swoole安装教程》》之前分享过,自己去公众号找一下
本文是 php利用swoole协程启动多个子进程模式,根据服务器配置实现子进程自定义数量,从而 避免因进程过多导致服务器卡死(本人已经历)
demo场景,爬取10w+个网页内容
脚本test1.php内容
/**
* Created by PhpStorm.
* User: zhangguofu
* Date: 20/5/17
* Time: 上午12:31
*/
echo "process-start-time:" . date("Ymd H:i:s") . PHP_EOL;
$baseUrl = "http://www.baidu.com/";//自定义网页
$count = 1000;//为了方便演示,此处用1000意思一下
for ($i = 0; $i < $count; $i++) {
creatProcess($i, $baseUrl);
}
function creatProcess($i, $url)
{
// 每次过来统计一下进程数量
$cmd = "ps -ef |grep test1 |grep -v grep |wc -l";
$pCount = system($cmd);//进程数量
if ($pCount < 200) {
// 创建子进程
$process = new swoole_process(function (swoole_process $worker) use ($i, $url) {
$content = curlData($url);//方法里面处理你的逻辑
});
$pid = $process->start();
echo $url . '------第' . $i . '个子进程创建完毕'.PHP_EOL;
} else {
sleep(10);//可以根据实际情况定义
creatProcess($i, $url);
}
}
function curlData($url)
{
sleep(20);//为了让子进程多存在一段时间,让大家看到效果
$content = file_get_contents($url);
file_put_contents("./sData/baidu.txt","tttttttttttttttt".$content,FILE_APPEND);
}
echo "process-end-time:" . date("Ymd H:i:s");
执行 php test1
查看命令行输出结果
image
截图相关解释
子进程数量一直在200左右(满200我sleep了10s,所以不会一直是200)。大大提高效率
另写了一个监控脚本,每一秒输出一下进程数量
while (true){
echo "Time" . date("Ymd H:i:s").'----------';
sleep(1);
$cmd="ps -ef |grep test1 |grep -v grep |wc -l";
$ret1 = system($cmd);
}
image
image
请求1000次,时间一共是144秒,里面还有几次sleep的时间,如果去掉sleep,真实时间48s,当然,逻辑业务不一样,时间也不一样
process-start-time:20200525 18:25:36
process-end-time:20200525 18:26:24
看一下我爬取的数据 1000条没毛病
image
爬取网页数据php,不到40行代码教你如何利用php高效快速的爬取10w+网页数据相关推荐
- python爬取小视频-40行代码教你利用Python网络爬虫批量抓取小视频
/1 前言/ 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! /2 整理 ...
- 40行代码教你利用Python网络爬虫批量抓取小视频
1. 前言 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! 2. 整理思 ...
- 40行代码教你爬遍小视频网站
/1 前言/ 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! /2 整理 ...
- java selenium_java+selenium,40行代码完成支付宝账单爬取
java+selenium,40行代码完成支付宝账单爬取 需要jar selenium-server-4.0.0-alpha-5.jar 需要驱动 chromedriver.exe 驱动需要和浏览器版 ...
- Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息
Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息 目录 输出结果 实现代码 输出结果 实现代码 # -*- coding: utf-8 -* ...
- java+selenium,40行代码完成支付宝账单爬取
java+selenium,40行代码完成支付宝账单爬取 需要jar selenium-server-4.0.0-alpha-5.jar 需要驱动 chromedriver.exe 驱动需要和浏览器版 ...
- 用python写web网页实现音乐数据库查询_Python tornado用40行代码搭建数据库交互网页实现快速全栈开发...
作为数据分析师,我们大部分时间做的事情都是搭建线下Excel报表,这既有优点也有缺点 优点是: 开发效率 快速建模,最快十分钟就可以建模 数据传播 便于传播,发文件就是发模型 交互友好 对使用者门槛低 ...
- 100行代码教你爬取斗图网(Python多线程队列)
100行代码教你爬取斗图网(Python多线程队列) 前言 根据之前写的两篇文章,想必大家对多线程和队列有了一个初步的了解,今天这篇文章就来实战一下,用多线程 + 队列 爬取斗图网的全网图片. 你还在 ...
- 40行代码带你免费看《海贼王-和之国》篇章
喜欢看海贼王的各位童鞋们,草帽一伙已经来到和之国啦,动漫在7月7号将会进入和之国篇章啦! 想提前看和之国篇章的同学可以先看一波漫画啦! 说到这里我有个打算,将网站上的所有和之国篇章的漫画全都down下 ...
最新文章
- 重磅:ATT的《5G移动边缘计算白皮书》!
- mysql两者之间_sql between 语法与查询两者之间数据方法
- 一致性hash算法使用
- Python协同过滤推荐算法(Collaborative Filtering)2.相似度的计算,相似度计算方法
- excel 表生成insert语句。
- 第三届人本沙龙12月活动小结
- 3django url name详解
- 使用函数求素数和_用母函数法处理一个数论问题的研究笔记
- linux下config文件,linux config 文件
- 计算一的阶乘累加到十的阶乘
- C语言中callback回调函数,C++回调函数(callback)的使用
- 经典论文之OverFeat
- CODESYS Visualization
- ewebeditor php漏洞,ewebeditor for php任意文件上传漏洞
- linux设置用户默认桌面背景,linux 修改桌面背景
- maven Web项目中POM的配置信息
- 电脑休眠睡眠状态下无线WiFi远程网络唤醒设置
- Linux两台主机之间建立信任关系
- JS作用域和自由变量
- 令程序员泪流满面的瞬间,实在忍不住笑了
热门文章
- SEO网站优化技巧整合
- 动态规划 计数型DP:dobra
- 关于 WARNING You are using pip version 21.1.2; however, version 22.0.4 is available.
- FL Studio中如何控制乐器力度?(如何画Midi CC控制器?)
- Ruby Enumerator的各种迭代
- 服务计算--简单 web 服务与客户端开发实战
- 年轻人为提前退休 毕业十年攒100万
- vue 自定义指令 权限指令
- vue 项目使用three.js 实现3D看房效果
- 26-29岁未婚女子的共同特点(转自:一个鄙视女人的男人。。同时,我也鄙视这个不尊重女人的男人)