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设计模式中的代理模式与模板方法模式编程
Feb 02 Python
python: line=f.readlines()消除line中\n的方法
Mar 19 Python
wxPython实现窗口用图片做背景
Apr 25 Python
python PrettyTable模块的安装与简单应用
Jan 11 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
python os模块在系统管理中的应用
Jun 22 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 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
php session应用实例 登录验证
2009/03/16 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
javascript 建设银行登陆键盘
2008/06/10 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
介绍JavaScript的一个微型模版
2015/06/24 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
Python作用域用法实例详解
2016/03/15 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
护士专业推荐信
2013/11/02 职场文书
财务方面个人工作的自我评价
2013/12/28 职场文书
八年级英语教学计划
2015/01/23 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
Python Parser的用法
2021/05/12 Python
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle