Scrapy框架详解

一, 介绍: scrapy是一个专业的,高效的爬虫框架, 它使用专业的Twisted包高效的处理网络通信, 使用lxml(专业的XML处理包),cssselect 高效的提取HTML页面的有效信息, 同时它也提供了有效的线程管理, 爬虫框架 是实现爬虫功能的一个软件结构和功能组件集合, 爬虫框架是一个半成品, 能够帮助用户实现专业的网络爬虫

二, 安装: pipenv  install scrapy

三,结构:  5+2 结构

5个模块分别是: engine模块 + spiders模块(框架入口)+ scheduler模块+ downloader模块+ item pipelines(框架出口)模块

2个中间件分别是: spiderMiddleware 和 downloaderMiddleware

3条数据流路径:

1️⃣:spiders模块经过engine模块到达scheduler模块(request请求)

2️⃣: scheduler模块通过engine模块 到达downloader模块, 将数据返回给spider模块

3️⃣spider模块通过engine模块分别达到item pipelines模块 和 scheduler模块

三,

1)engine模块功能:(整个框架核心, 控制所有模块的数据流, 根据条件触发事件)

2)downloader模块:(根据请求下载网页)

3)scheduler: 负责调度

4)item pipelines 模块: 以流水线的方式处理spider产生的爬取项,由一组操作顺序组成,类似流水线, 每个操作是一个item Piplines类型(可能操作包括:清理,检验,和查重爬取项中的HTML数据,将数据存储到数据库)

5)spider: 解析Downloader返回的响应(Response), 产生爬取项 , 产生额外的爬取请求(Request)

四,Downloader Middleware:

目的: 实施Engine,scheduler和downloader之间进行用户可配置的控制

功能: 修改,丢弃,新增请求或响应  用户可以编辑可配置代码

五:Spider Middleware:

目的: 对请求和爬取项的在处理

功能: 修改,丢弃,新增请求或爬取项

六, requests库和Scrapy爬虫的比较

相同点:

1)两者都可以进行页面请求和爬取, Python爬虫的两个重要技术路线

2)两者可用性都好,文档丰富,入门简单

3)两者都没有处理js,提交表单,应对验证码等功能

不同点:

1)requests是页面级爬虫, scrapy是网站级爬虫

2)requests功能库, scrapy是框架

3)requests并发性考虑不足,性能较差, scrapy并发性好,性能高

4)requests重点在于页面下载, scrapy重点在于爬虫结构

5)requests定制灵活, scrapy一般定制灵活,深度定制困难

6)requests上手十分简单, scrapy入门稍难

选用那个技术路线实现爬虫?

1)非常小的需求, requests库

2)不太小的需求, scrapy框架

3)定制程度很高的需求(不考虑规模),自搭框架, requests>scrapy

七, scrapy的常用命令:

1)scrapy startproject 创建一个新工程 

2)scrapy genspider + demo(爬虫名字) + python123.io(爬取域名) 创建一个爬虫

3)scrapy settings  获得爬虫配置信息

4)scrapy crawl 运行一个爬虫 

5)scrapy list 列出工程中所有爬虫

6)scrapy shell 启动url调试命令行

原文地址:https://www.cnblogs.com/wangyue0925/p/11233188.html