继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

呼啦一阵风
关注TA
已关注
手记 181
粉丝 73
获赞 318

环境搭建

  1. 需要安装 scrapy 和 scrapy-redis

    pip install scrapy
    pip install scrapy-redis
    • 1

    • 2

    • 3

  2. 安装配置好 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)

原文出处

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP