python爬虫:scrapy-redis实现分布式爬虫-阿里云开发者社区

开发者社区> 开发者小助手-bz> 正文

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

简介: python爬虫:scrapy-redis实现分布式爬虫
+关注继续查看

环境搭建

  1. 需要安装 scrapy 和 scrapy-redis
pip install scrapy
pip install scrapy-redis
  1. 安装配置好 redis
    如果是mac种用homebrew安装的redis,配置文件路径为:
/usr/local/etc/redis.conf

修改配置文件

# bind 127.0.0.0
bind 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 的 RedisPipeline
ITEM_PIPELINES = {
    "scrapy_redis.pipelines.RedisPipeline": 300,
}

# 爬虫停止后保留请求队列和去重集合
SCHEDULER_PERSIST = True, # False: 清理(默认)

第二步,修改爬虫文件

from scrapy_redis.spiders import RedisSpider

# 1. 修改基类: Spider -> RedisSpider
class BooksSpider(RedisSpider):
    name = "books"
    # 2. 删除start_urls

第三步,启动爬虫

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

scrapy crawl books

第四步,发送爬虫起点

books 为爬虫名称

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

# 查看过滤器数量
> scard books:dupefilter
(integer) 36001

# 查看请求队列数量
> zcard books:requests
(integer) 27410

# 查看保存数据数量
> llen books:items
(integer) 478118

第五步,导出数据

# -*- coding: utf-8 -*-

# @File    : export_data.py
# @Date    : 2018-05-21

# 从redis数据库导出数据

import json
import redis
from pprint import pprint

# redis中存放数据的key
ITEM_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)


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
python编程-28:Scrapy爬虫框架
python编程-28:Scrapy爬虫框架
20 0
Python爬虫之scrapy跨页面爬取信息
昨天凌晨2点醒了看了下向右奔跑的文章,准备来个scrapy跨页面的数据爬取,以简书七日热门数据为例。 1 items.py代码 from scrapy.item import Item,Field class SevendayItem(Item): ...
807 0
python编程-29:Scrapy爬虫基本使用
python编程-29:Scrapy爬虫基本使用
31 0
python爬虫:scrapy命令失效,直接运行爬虫
python爬虫:scrapy命令失效,直接运行爬虫
22 0
3、web爬虫,scrapy模块介绍与使用
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。
934 0
基于python的Scrapy爬虫框架实战
基于python的Scrapy爬虫框架实战 2018年7月19日笔记 1.伯乐在线 网站页面如下图所示: 网站页面.png 1.1 新建爬虫工程 命令:scrapy startproject BoleArticle 新建爬虫工程命令 命令:scrapy genspider article "blog.jobbole.com" 注意:运行此命令时必须在爬虫工程文件夹内,如下图路径所示。
1287 0
Scrapy框架--通用爬虫Broad Crawls(下,具体代码实现)
通过前面两章的熟悉,这里开始实现具体的爬虫代码 广西人才网 以广西人才网为例,演示基础爬虫代码实现,逻辑: 配置Rule规则:设置allow的正则-->设置回调函数 通过回调函数获取想要的信息 具体的代码实现: import scrapy from scrapy.
1011 0
Python爬虫入门教程 37-100 云沃客项目外包网数据爬虫 scrapy
爬前叨叨 2019年开始了,今年计划写一整年的博客呢~,第一篇博客写一下 一个外包网站的爬虫,万一你从这个外包网站弄点外快呢,呵呵哒 数据分析 官方网址为 https://www.clouderwork.
757 0
1569
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载