《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。(https://blog.csdn.net/wyatt007/article/details/80369755)

②管理员权限启动Anoconda Prompt,输入conda install scrapy。

《Python网络爬虫与信息提取》第四周 网络爬虫之框架 学习笔记(一)Scrapy爬虫框架_第1张图片

③稍等片刻,按回车键。

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

《Python网络爬虫与信息提取》第四周 网络爬虫之框架 学习笔记(一)Scrapy爬虫框架_第2张图片

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

《Python网络爬虫与信息提取》第四周 网络爬虫之框架 学习笔记(一)Scrapy爬虫框架_第3张图片

(3)Scrapy爬虫框架结构

scrapy不是一个函数功能库,而是一个爬虫框架。

①爬虫框架:爬虫框架是实现爬虫功能的一个软件结构和功能组件集合;爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。

②“5+2”结构:

《Python网络爬虫与信息提取》第四周 网络爬虫之框架 学习笔记(一)Scrapy爬虫框架_第4张图片

过程:

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”结构:

《Python网络爬虫与信息提取》第四周 网络爬虫之框架 学习笔记(一)Scrapy爬虫框架_第5张图片

(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  [options] [args]

:Scrapy命令。

(3)Scrapy常用命令

命令 说明 格式
startproject 创建一个新工程 scrapy startproject [dir]
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是给程序员用的,功能(而不是界面)更重要。
 

你可能感兴趣的:(Python网络爬虫)