最近想搞懂srapy,读了很多资料觉得这张图最好理解
5+2模式
五个模块
SPIDERS:能提出需求产生爬取项item,爬取请求requests,解析响应response
ENGINE:控制数据流,提供事件触发,核心部分
SCHEDULER:接收请求,调度请求
DOWNLOADER:工作模块,根据提供请求进行连接获取响应
ITEM PIPELINES:以流水线获取SPIDERS产生的爬取项,由一组操作顺序组成,类似流水线,每个操作是一个ITEM PIPLINE类型,包括清理检验去重和导入数据库
两个中间键
DOWNLOADER MIDDLEWARE:在ENGINE,SCHEDULER,DOWNLOADER之间修改,丢弃或新增请求或响应
SPIDER MIDDLEWARE:在SPIDER,ENGINE之间,对sipder产生的请求或爬取项进行再处理,修改,丢弃或新增请求或爬取项
三条路线:
1.spiders-REQUESTS-engine-REQUESTS-scheduler:用户提出需求,请求调度
2.scheduler-REQUESTS-engine-REQUERSTS-downloader-RESPONSE-engine-RESPONSE-spider:真实爬取请求下载,返回响应内容
3.spiders-ITEMS/TEQUESTS-engine-ITEMS-item pipelines-REQUESTS-scheduler:存储数据,提出新的请求
SPIDERS是入口,ITEM PIPELINES是出口,这两个模块也是用户主要操作的模块
SCHEDULER,ENIGINE,DOWNLOADER已有功能实现,完成既定内容,配置模块
与requests库比较:
可以进行网页请求与爬取
无法应对JS和验证码
并发性好,一般性定制灵活,深度定制困难
常用命令总结
命令行scrapy -h
结构:scrapy <command>[options][args]
startproject 创建新工程 scrapy startproject <name>[dir]
genspider 创建一个爬虫 scrapy genspider [options]<name><domiain>
settings 获得爬虫配置信息 scrapy settings [options]
crawl 运行一个爬虫 scrapy crawl <spider>
list 列出工程中所有爬虫 scrapy list
shell 启动URL调试命令行 scrapy shell [URL]