前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何利用EasySwoole多进程多协程redis队列实现爬虫

如何利用EasySwoole多进程多协程redis队列实现爬虫

作者头像
北溟有鱼QAQ
发布2020-02-25 12:34:48
1K0
发布2020-02-25 12:34:48
举报
文章被收录于专栏:北溟有鱼QAQ

什么是爬虫?

  • 爬虫是一种按照一定的规则,自动地抓取网上数据的程序或脚本

爬虫之前的准备?

  • 根据初始页面,制定规则获取更多的需要爬取的页面
  • 根据页面内容制定规则,爬取想要的东西

用到的组件及框架


根据页面内容制定规则
代码语言:javascript
复制
// 开始生产,根据内容,设置规则
libxml_use_internal_errors(true);
$ql = QueryList::html($body);
//获取当前页面所有的图片
$rules = [
	'src' => ['.list ul img', 'src'],
	'alt' => ['.list ul img', 'alt'],
         ];
//获取下个页面要爬取的地址链接
$nextUrl = $ql->find('.page .prev')->eq(1)->attr('href');
$imgList = $ql->rules($rules)->encoding('UTF-8','GB2312')->query()->getData()->all();
然后分别入队列
代码语言:javascript
复制
foreach ($imgList as $img)
{
	RedisQueue::getInstance()->push(CONSUME,$img);
}
//要爬取的页数,没有则停止生产
if(empty($nextUrl))
{
	\co::sleep(1);
	continue;
}
Logger::getInstance()->console($nextUrl);
//页面中的爬取链接不带host,要拼接上
RedisQueue::getInstance()->push(QueueName,'http://www.netbian.com'.$nextUrl);
\co::sleep(0.5);
其次就可以看到效果图了

爬取了大概三千多张图片,用时几分钟,本爬虫框架仅供学习参考,切不可以用于非法用途

此爬虫代码以开源,并在GitHub开源地址 上,欢迎学习start

本文为北溟有鱼QAQ原创文章,转载无需和我联系,但请注明来自北溟有鱼QAQ https://www.umdzz.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是爬虫?
  • 爬虫之前的准备?
  • 用到的组件及框架
    • 根据页面内容制定规则
      • 然后分别入队列
        • 其次就可以看到效果图了
        • 此爬虫代码以开源,并在GitHub开源地址 上,欢迎学习start
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档