为了账号安全,请及时绑定邮箱和手机立即绑定

python爬虫:scrapy-redis实现分布式爬虫

标签:
Python

环境搭建

  1. 需要安装 scrapy 和 scrapy-redis

    pip install scrapy
    pip install scrapy-redis
  • 1

  • 2

  • 3

  • 安装配置好 redis
    如果是mac种用homebrew安装的redis,配置文件路径为:

  • /usr/local/etc/redis.conf

    修改配置文件

    # bind 127.0.0.0bind 0.0.0.0

    第一步,配置settings.py

    # 指定Redis数据库REDIS_URL = "redis://localhost:6379"# 使用scrapy-redis 的调度器替代原版调度器SCHEDULER = "scrapy_redis.scheduler.Scheduler"# 使用scrapy-redis 的去重过滤器替代原版DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"# 启用scrapy-redis 的 RedisPipelineITEM_PIPELINES = {    "scrapy_redis.pipelines.RedisPipeline": 300,
    }# 爬虫停止后保留请求队列和去重集合SCHEDULER_PERSIST = True, # False: 清理(默认)

    第二步,修改爬虫文件

    from scrapy_redis.spiders import RedisSpider# 1. 修改基类: Spider -> RedisSpiderclass BooksSpider(RedisSpider):
        name = "books"
        # 2. 删除start_urls

    第三步,启动爬虫

    在各个服务器启动爬虫,爬虫将会进入等待状态

    scrapy crawl books

    第四步,发送爬虫起点

    # 先启动redis
    $ redis-cli
    > lpush books:start_urls "http://www.baidu.com"

    第五步,导出数据

    # -*- coding: utf-8 -*-# @File    : export_data.py# @Date    : 2018-05-21# 从redis数据库导出数据import jsonimport redisfrom pprint import pprint# redis中存放数据的keyITEM_KEY = "books_distribution:items"def process_item(item):
        """处理数据
        :param
            item{dict}: 单条数据
        :return:
            None
        """
        pprint(item)
    
    
    r = redis.Redis(host="localhost", port=6379)for _ in range(r.llen(ITEM_KEY)):
        data = r.lpop(ITEM_KEY)
        item = json.loads(data)
        process_item(item)

    原文出处

    点击查看更多内容
    TA 点赞

    若觉得本文不错,就分享一下吧!

    评论

    作者其他优质文章

    正在加载中
    • 推荐
    • 评论
    • 收藏
    • 共同学习,写下你的评论
    感谢您的支持,我会继续努力的~
    扫码打赏,你说多少就多少
    赞赏金额会直接到老师账户
    支付方式
    打开微信扫一扫,即可进行扫码打赏哦
    今天注册有机会得

    100积分直接送

    付费专栏免费学

    大额优惠券免费领

    立即参与 放弃机会
    意见反馈 帮助中心 APP下载
    官方微信

    举报

    0/150
    提交
    取消