《Python网络爬虫与信息提取》第四周 网络爬虫之框架 学习笔记(一)Scrapy爬虫框架
目录
一、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爬虫的命令行逻辑
一、Scrapy爬虫框架
1、Scrapy爬虫框架介绍
(1)Scrapy的定义
功能强大的网络爬虫框架。
(2)Scrapy的安装
管理员权限启动cmd。
输入:
pip install scrapy
备注:在使用pip的时候,在后面加上-i参数,指定pip源。
pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
安装后小测:
scrapy-h
备注:原来的Scrapy的安装方法不实用;故采用以下的安装方法。
①首先安装Anaconda。(<>)
②管理员权限启动Anoconda Prompt,输入conda install scrapy。

③稍等片刻,按回车键。

④出现Proceed,输入y,按回车键。

⑤输入conda list,发现有scrapy,说明安装成功。

(3)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。
2、Scrapy爬虫框架解析
(1)Scrapy爬虫框架结构
“5+2”结构:

(2)五个模块
①Engine模块(不需要用户修改):控制所有模块之间的数据流;根据条件触发事件。
②Downloader模块(不需要用户修改):根据请求下载网页。
③Scheduler模块(不需要用户修改):对所有爬取请求进行调度管理。
④Spider模块(需要用户编写配置代码):解析Downloader返回的响应(Response);产生爬取项(scraped item);产生额外的爬取请求(Request)。
⑤Item Pipelines模块(需要用户编写配置代码):以流水线方式处理Spider产生的爬取项;由一组操作顺序组成,类似流水线,每个操作是一个Item Pipeline类型;可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库。
(3)两个中间键
①Downloader Middleware中间键:
目的:实施Engine、Scheduler和Downloader之间进行用户可配置的控制。
功能:修改、丢弃、新增请求或响应。
用户可以编写配置代码。
②Spider Middleware中间键:
目的:对请求和爬取项的再处理。
功能:修改、丢弃、新增请求或爬取项。
用户可以编写配置代码。
3、requests库和Scrapy爬虫的比较
requests vs. Scrapy
(1)相同点
①两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线。
②两者可用性都好,文档丰富,入门简单。
③两者都没用处理js、提交表单、应对验证码等功能(可扩展)。
(2)不同点
| requests | Scrapy |
|---|---|
| 页面级爬虫 | 网站级爬虫 |
| 功能库 | 框架 |
| 并发性考虑不足,性能较差 | 并发性好,性能较高 |
| 重点在于页面下载 | 重点在于爬虫结构 |
| 定制灵活 | 一般定制灵活,深度定制困难 |
| 上手十分简单 | 入门稍难 |
(3)选用哪个技术路线开发爬虫
非常小的需求,requests库。
不太小的需求,Scrapy框架。
定制程度很高的需求(不考虑规模),自搭框架,requests>Scrapy。
4、Scrapy爬虫的常用命令
(1)Scrapy命令行
Scrapy是为持续运行设计的专业爬虫框架,提供操作的Scrapy命令行。
(2)Scrapy命令行格式
scrapy <command> [options] [args]
(3)Scrapy常用命令
| 命令 | 说明 | 格式 |
|---|---|---|
| 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。
(4)Scrapy爬虫的命令行逻辑
为什么Scrapy采用命令行创建和运行爬虫?
命令行(不是图形界面)更容易自动化,适合脚本控制。
本质上,Scrapy是给程序员用的,功能(而不是界面)更重要。
