栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

环境搭建
  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)

    原文出处

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/221805.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号