python爬虫分布式获取数据的实例方法


Posted in Python onNovember 26, 2020

在我们进行卫生大扫除的时候,因为工作任务较多,所以我们会进行分工,每个人负责不同的打扫项目。同样分工合作的理念,在python分布式爬虫中也得到了应用。我们需要给不同的爬虫分配指令,让它们去分头行动获取同一个网站的数据。那么这些爬虫是怎么分工搜集数据的呢?感兴趣的小伙伴,我们可以通过下面的示例进行解惑。

假设我有三台爬虫服务器A、B和C。我想让我所有的账号登录任务分散到三台服务器、让用户抓取在A和B上执行,让粉丝和关注抓取在C上执行,那么启动A、B、C三个服务器的celery worker的命令就分别是

celery -A tasks.workers -Q login_queue,user_crawler worker -l info -c 1 # A服务器和B服务器启动worker的命令,它们只会执行登录和用户信息抓取任务。

celery -A tasks.workers -Q login_queue,fans_followers worker -l info -c 1 # C服务器启动worker的命令,它只会执行登录、粉丝和关注抓取任务。

然后我们通过命令行或者代码(如下)就能发送所有任务给各个节点执行了

# coding:utf-8
from tasks.workers import app
from page_get import user as user_get
from db.seed_ids import get_seed_ids, get_seed_by_id, insert_seeds, set_seed_other_crawled
@app.task(ignore_result=True)
def crawl_follower_fans(uid):
  seed = get_seed_by_id(uid)
  if seed.other_crawled == 0:
    rs = user_get.get_fans_or_followers_ids(uid, 1

    rs.extend(user_get.get_fans_or_followers_ids(uid, 2))
    datas = set(rs)
    # 重复数据跳过插入
    if datas:
      insert_seeds(datas)
    set_seed_other_crawled(uid)
@app.task(ignore_result=True)
def crawl_person_infos(uid):
  ""
  根据用户i来爬取用户相关资料和用户的关注数和粉丝数(由于微博服务端限制,默认爬取前五页,企业号的关注和粉丝也不能查看)
  :param uid: 用户id
  :return:
  """
  if not uid:
    return
  # 由于与别的任务共享数据表,所以需要先判断数据库是否有该用户信息,再进行抓取
  user = user_get.get_profile(uid)
  # 不抓取企业号
  if user.verify_type == 2:
    set_seed_other_crawled(uid)
    return
  app.send_task('tasks.user.crawl_follower_fans', args=(uid,), queue='fans_followers',
         routing_key='for_fans_followers')
@app.task(ignore_result=True)
def excute_user_task():
  seeds = get_seed_ids()
  if seeds:
    for seed in seeds:
      # 在send_task的时候指定任务队列
      app.send_task('tasks.user.crawl_person_infos', args=(seed.uid,), queue='user_crawler',
             routing_key='for_user_info')

分布式爬虫架构图

python爬虫分布式获取数据的实例方法

到此这篇关于python爬虫分布式获取数据的实例方法的文章就介绍到这了,更多相关python爬虫如何分布式获取数据?内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的多行注释文档编写风格汇总
Jun 16 Python
python 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
pyhton列表转换为数组的实例
Apr 04 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 Python
python实现代码统计程序
Sep 19 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
Python的in,is和id函数代码实例
Apr 18 Python
python plt.plot bar 如何设置绘图尺寸大小
Jun 01 Python
实操Python爬取觅知网素材图片示例
Nov 27 Python
python分布式爬虫中消息队列知识点详解
Nov 26 #Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 #Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 #Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 #Python
Django-celery-beat动态添加周期性任务实现过程解析
Nov 26 #Python
Django celery异步任务实现代码示例
Nov 26 #Python
Django通过设置CORS解决跨域问题
Nov 26 #Python
You might like
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
php实例分享之mysql数据备份
2014/05/19 PHP
javascript的函数
2007/01/31 Javascript
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
解读ES6中class关键字
2017/11/20 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
Python常用的日期时间处理方法示例
2015/02/08 Python
python实现简单的计时器功能函数
2015/03/14 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
Python中包的用法及安装
2020/02/11 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
护士自荐信怎么写
2013/10/18 职场文书
中专毕业生的自我鉴定
2013/12/01 职场文书
《匆匆》教学反思
2014/02/22 职场文书
培训研修方案
2014/06/06 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
python三子棋游戏
2022/05/04 Python