Scrapy-Rabbit
1.简介
基于Scrapy爬虫框架与RabbitMQ消息队列结合,一款新的分布式采集框架
2.快速入门
安装
pip install scrapy_rabbit创建项目
scrapy_rabbit startproject ProjectName
- ProjectName:要创建的项目名称
创建爬虫
scrapy_rabbit genspider SpidersClass SpiderName Url
SpidersClass:爬虫分类
SpiderName:爬虫名字
Url:初始连接
是否使用代理以及是否清空队列都可以在Spider中单独配置
修改配置
在conf下config.ini中设置rabbit的链接方式即可。
指定运行方式
run方法需要传一个列表,列表里第一个元素为当前
爬虫分类名字,第二元素为爬虫名字,第三元素为运行模式(auto(自动):所有请求生产完成后直接开始消费。m(生产模式):只生产不消费。w(消费模式):只消费不生产),第四元素为并发量。运行 接下来就可以直接右键运行,或者使用命令行
python spider.py运行,spider.py为当前爬虫文件。整体目录结构
3.架构图
Spider(爬虫):负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入RabbitMQ
Engine(引擎):框架核心,负责Spider、RabbitMQ、Downloader、ItemPipeline中间的通讯,信号、数据传递等
RabbitMQ(消息队列):负责接受引擎发送过来的Request请求,并按照指定优先级存入消息队列
Downloader(下载器):负责下载RabbitMQ中所有Requests请求,并将其获取到的Responses交还给Engine,由引擎交给Spider来处理
ItemPipeline(管道):负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方
Downloader Middlewares(下载中间件):介于Scrapy引擎和下载器之间的中间件,主要是处理Scrapy引擎与下载器之间的请求及响应
Spider Middlewares(Spider中间件):介于Scrapy引擎和爬虫之间的中间件,主要工作是处理蜘蛛的响应输入和请求输出
4.运行流程
Spider将所有Requests发送给Engine
引擎把Url封装成一个请求(Request)传给RabbitMQ,RabbitMQ将所有的请求按照优先级保存下来
下载器把资源下载下来,并封装成应答包(Response)交给Spider,如果请求失败则重新放入到RabbitMQ中
爬虫解析Response
若是解析出实体(Item),则交给实体管道进行进一步的处理
若是解析出的是链接(Url),则把Url交给引擎,封装成一个请求(Request)传给RabbitMQ等待下载
5.监控截图
6.Todo
-
生产结束后自动消费
-
Spiders里可以指定ItemPipeline
-
请求失败重新返回到消息队列
-
支持Middlewares
-
与Scarpy兼容
-
可以在Spider里指定RabbitMQ队列
-
Log日志需要整理
-
脚本采集信息以及日志存入MongoDB
-
使用平台化来开发爬虫
-
对当前项目下所有爬虫进行控制
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file scrapy_rabbit-0.2.9.tar.gz.
File metadata
- Download URL: scrapy_rabbit-0.2.9.tar.gz
- Upload date:
- Size: 37.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1525f8f5189bbe719a6fe43dcc0885f51c2c2a72208c8d7cdb7b44a88c042553
|
|
| MD5 |
82f70b60de56988778c9edcc2657321f
|
|
| BLAKE2b-256 |
a71e5d5df11c9ae14a1e30998bd57b011aaaf581894e7496cb560ccf04ef852f
|