目录
一、Scrapy爬虫框架
1、Scrapy爬虫框架介绍
(1)Scrapy的定义
(2)Scrapy的安装
(3)Scrapy爬虫框架结构
2、Scrapy爬虫框架解析
(1)Scrapy爬虫框架结构
(2)五个模块
(3)两个中间键
3、requests库和Scrapy爬虫的比较
(1)相同点
(2)不同点
(3)选用哪个技术路线开发爬虫
4、Scrapy爬虫的常用命令
(1)Scrapy命令行
(2)Scrapy命令行格式
(3)Scrapy常用命令
(4)Scrapy爬虫的命令行逻辑
功能强大的网络爬虫框架。
管理员权限启动cmd。
输入:
pip install scrapy
备注:在使用pip的时候,在后面加上-i参数,指定pip源。
pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
安装后小测:
scrapy-h
备注:原来的Scrapy的安装方法不实用;故采用以下的安装方法。
①首先安装Anaconda。(https://blog.csdn.net/wyatt007/article/details/80369755)
②管理员权限启动Anoconda Prompt,输入conda install scrapy。
③稍等片刻,按回车键。
④出现Proceed,输入y,按回车键。
⑤输入conda list,发现有scrapy,说明安装成功。
scrapy不是一个函数功能库,而是一个爬虫框架。
①爬虫框架:爬虫框架是实现爬虫功能的一个软件结构和功能组件集合;爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。
②“5+2”结构:
过程:
1:Engine从Spiders处获得爬取请求(Requests)。
2:Engine将爬取请求(Requests)转发给Scheduler,用于调度。
3:Engine从Scheduler处获得下一个要爬取的请求(Requests)。
4:Engine将爬取请求(Requests)通过中间件发送给Downloader。
5:爬取网页后,Downloader形成响应(Response)通过中间件发给Engine。
6:Engine将收到的响应(Response)通过中间件发送给Spiders处理。
7:Spiders处理响应后产生爬取项(Items)和新的爬取请求(Requests)给Engine。
8:Engine将爬取项(Items)发送给Item Pipelines(框架出口)。
9:Engine将爬取请求(Requests)发送给Scheduler。
Engine控制各模块数据流,不间断从Scheduler处获得爬取请求,直至请求为空。
框架入口:Spiders。
框架出口:Item Pipelines。
已有实现:Engine、Downloader、Scheduler。
用户编写(配置):Spiders、Item Pipelines。
“5+2”结构:
①Engine模块(不需要用户修改):控制所有模块之间的数据流;根据条件触发事件。
②Downloader模块(不需要用户修改):根据请求下载网页。
③Scheduler模块(不需要用户修改):对所有爬取请求进行调度管理。
④Spider模块(需要用户编写配置代码):解析Downloader返回的响应(Response);产生爬取项(scraped item);产生额外的爬取请求(Request)。
⑤Item Pipelines模块(需要用户编写配置代码):以流水线方式处理Spider产生的爬取项;由一组操作顺序组成,类似流水线,每个操作是一个Item Pipeline类型;可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库。
①Downloader Middleware中间键:
目的:实施Engine、Scheduler和Downloader之间进行用户可配置的控制。
功能:修改、丢弃、新增请求或响应。
用户可以编写配置代码。
②Spider Middleware中间键:
目的:对请求和爬取项的再处理。
功能:修改、丢弃、新增请求或爬取项。
用户可以编写配置代码。
requests vs. Scrapy
①两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线。
②两者可用性都好,文档丰富,入门简单。
③两者都没用处理js、提交表单、应对验证码等功能(可扩展)。
requests | Scrapy |
页面级爬虫 | 网站级爬虫 |
功能库 | 框架 |
并发性考虑不足,性能较差 | 并发性好,性能较高 |
重点在于页面下载 | 重点在于爬虫结构 |
定制灵活 | 一般定制灵活,深度定制困难 |
上手十分简单 | 入门稍难 |
非常小的需求,requests库。
不太小的需求,Scrapy框架。
定制程度很高的需求(不考虑规模),自搭框架,requests>Scrapy。
Scrapy是为持续运行设计的专业爬虫框架,提供操作的Scrapy命令行。
scrapy [options] [args]
命令 | 说明 | 格式 |
startproject | 创建一个新工程 | scrapy startproject |
genspider | 创建一个爬虫 | scrapy genspider [options] |
settings | 获得爬虫配置信息 | scrapy settings [options] |
crawl | 运行一个爬虫 | scrapy crawl |
list | 列出工程中所有爬虫 | scrapy list |
shell | 启动URL调试命令行 | scrapy shell [url] |
最常用的命令:startproject、genspider、crawl。
为什么Scrapy采用命令行创建和运行爬虫?
命令行(不是图形界面)更容易自动化,适合脚本控制。
本质上,Scrapy是给程序员用的,功能(而不是界面)更重要。