python爬虫:scrapy-redis实现分布式爬虫
2023-09-14 09:07:13 时间
环境搭建
需要安装 scrapy 和 scrapy-redis
pip install scrapy pip install scrapy-redis
安装配置好 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获取时间戳_python爬虫时间戳
- Redis分布式锁python-redis-lock使用方法
- Redis的Python客户端redis-py安装使用说明文档
- Redis爬虫:构建高效的网络爬取系统(redis爬虫)
- 吗?爬虫是否有必要应用Redis?(爬虫有必要redis)
- Python实现快速连接Redis数据库(python连接redis)
- Redis缓存的多种好处简述(redis缓存好处)
- Redis精髓:彻底掌握多种数据格式(redis的数据格式)
- RedisPy: A HighPerformance Python Client for Redis Database(redis-py)
- ymysql在Python中使用Redis CLI和Pymysql(redis cli p)
- 如何使用Python连接Redis(怎么连接到redis)
- 错深入了解Redis是否存在缺陷(怎么看redis有没有起)
- Redis常见配置概览(常见配置redis)
- 利用Python轻松获取Redis集群信息(获取redis集群信息)
- 查看谁正在使用Redis连接(查看redis被谁连接)
- 利用Redis实现精准爬虫去重(爬虫用redis去重)
- 爬虫秒杀IP池Redis催生绝技(爬虫用redis做ip池)
- Redis构建爬虫框架,挖掘自然之美(爬虫框架 redis)
- 攻克新挑战爬虫数据存入Redis(爬虫数据存入redis)
- 以Redis加速爬虫去重的突破(爬虫去重redis)
- 爬虫与Redis联合,提升数据分析能力(爬虫加入redis)
- 爬虫技术基于Redis精心调度实现高效爬取(爬虫之redis调度)
- 用Redis让爬虫攀上高峰(爬虫为何用redis)
- 原来爬虫是用Redis才行(爬虫为什么用redis)
- 借助Redis增强爬虫性能(爬虫 redis)
- 以命令行连接远程服务器上的Redis(命令行远程连接redis)
- 红色高可用基于Redis集群的哈希槽实现(redis集群 哈希槽)
- Redis实现的蜘蛛池探索分布式爬虫的新世界(redis 蜘蛛池)
- 网络爬虫的强大助力Redis技术(redis网络爬虫)
- 跟老齐学Python之再深点,更懂list