爬虫框架,爬虫应用等内容讲解
树图思维导图提供 第八章 爬虫框架 Scrapy 在线思维导图免费制作,点击“编辑”按钮,可对 第八章 爬虫框架 Scrapy 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:de673f8f892feb213789d42969034162
第八章 爬虫框架 Scrapy 思维导图模板大纲
Scrapy 是目前 Python 中使用最广泛的爬虫框架,用于爬取网站数据,提取结构性的数据。简单来说,Scrapy 是一个半成品,相关扩展组件多,可配置和可扩展程度非常高,可 以帮助用户简单快速地实现一个网络爬虫。
每个组件具有不同的功能,其作用如下: (1)Engine(引擎):负责处理系统的数据流、触发事务,是整个框架的核心。 (2)Scheduler(调度器):负责处理所有的 Request,并按照一定的方式将其进行整理、排列和入队。此外,Scheduler 可以自动去除重复的 URL,如果特定 Request 的 URI不需要去重也可以通过设置实现,如 POST请求。 (3)Downloader (下载器):负责下载网页内容。 (4)Spider:负责解析所有的 Response,提取Item所需的数据和新的URL。用户可以在一个项目中编写多个 Spider,每个负责处理一个特定(或一些)网站。 (5)Item Pipeline(项目管道): 负责处理 Item,常见的处理有清理、验证和存储数据等。 (6)Downloader Middleware (下载中间件): 位于 Engine 和 Downloader 之间,可以自定义扩展下载功能,如自动更换 User-Angent、设置代理IP等。 (7)Spider Middleware (Spider 中间件): 位于 Engine 和 Spider 之间,可以自定义扩展Engine 和Spider 间通信的功能。
在Scrapy 中由 Engine 控制数据流,其工作的基本步骤如下: (1)Engine 从 Spider 获取初始爬取列表的 Request。 (2)Engine 将要爬取的 Request 发送给 Scheduler,通过 Scheduler 进行调度。 (3)Engine 向 Scheduler 获取下一个要爬取的 Request。 (4)Engine 将 Request 通过 Downloader Middleware 发送给 Downloader。 (5)当网页下载完毕,Downloader 生成该网页的 Response,并将其通过 DownloaderMiddleware 提交给 Engine。 (6) Engine 将接收到 Response 通过 Spider Middleware 发送给 Spider 处理 (7)Spider 解析响应,提取 tem 所需的数据和新的 URL,并将Item 和新的 Request通过 Spider Middleware 提交给 Engine。 (8)Engine将Item 发送给 Item Pipeline,将新的 Request 发送给 Scheduler。 (9)重复第(2)~(8)步,直到 Scheduler 中没有 Request, Engine 关闭该爬虫程序,爬取结束。
创建项目
scrapy 库提供了 startproject 命令用于创建一个爬虫项目,其语法格式如下:scrapy startproject <project name> [project dir] (1)project_name:表示创建的爬虫项目名称。 (2)project dir: 表示存放爬虫项目的路径。指定该参数后,会在 project dir 目录下生成一个名为 project_name 的文件夹;如果不指定该参数,则将在命令执行路径下生成。
修改items脚本
scrapy 库提供Item对象来实现将爬取到的数据转换成结构化数据的功能。实现方法是定义Item类(继承 scrapy.Item 类),并定义类中的数据类型为 scrapy.Filed 字段。
创建spider脚本
scrapy库提供了genspider 命令用于创建一个 spider 脚本,其语法格式如下: scrapy genspider [template] <name> <domain> (1)template:表示创建模板的类型,缺省则使用默认模板。 (2)name:表示创建的 spider 脚本名称,创建后会在 spiders 目录下生成一个以 name命名的.py文件。 (3)domain:表示要爬取网站的域名。 在BaiduSpider 项目中创建一个爬取百度首页热榜新闻的spider 脚本,命名为news,域名为www.baidu.com,其过程为:输入“cd BaiduSpider”命令并运行,切换到“BaiduSpider目录下:然后输入“scrapy genspider news www.baidu.com”命令并运行,创建一个 spider脚本,如图8-4所示。 创建spider 脚本后,在 spiders 目录下生成了一个名为“news.py”的文件,其模板见图8-4。在该文件中定义了一个NewsSpider 类,其中包含三个属性和一个方法,它们的说明如下: (1)name:在同一个项目中,名字是唯一的,用来区分不同的 spider。 (2)allowed domains:允许爬取的域名,如果初始或后续请求的URL不是这个域名下的,则请求会被过滤掉,可以根据需要编辑或添加。 (3)start urls: spider 初始爬取的 URL列表,可以根据需要编辑或添加。 (4)parse(self,response): 解析返回的响应,提取数据或新的 URL,response 是请求start urs后返回的响应。 由于 scrapy 库支持 CSS 选择器、XPath 选择器和正则表达式,所以解析响应时可以调用xpath()、css()等方法提取数据。调用方法后返回的数据是 SelectorList 类型,并不是真正的文本内容。此时,可以使用 extract()方法(返回列表)或 extract first()方法(返回列表的第一个元素来提取所需数据。
修改Settings脚本
settings 脚本提供键值映射的全局命名空间,可以使用代码提取其中的配置值。默认的settings 文件中共有25 项设置。
运行爬虫程序
使用 Scrapy 中的 crawl命令运行该项目,其语法格式如下: scrapy crawl <spider name>其中,“spider _name”参数表示 spider 脚本的名称。 另外,还可以通过命令将爬取到的内容保存到文件中。例如,输入“scrapy crawlnews-onews.json”命令并运行,即可将 Item 的内容保存到JSON 文件中。
修改 pipelines 脚本
如果想进行更复杂的处理,如筛选一些有用的数据或将数据保存到数据库中。 定义Item Pipeline 只需要定义一个类并实现 process_item()方法即可。process item()方法有两个参数:一个是 item 参数,Spider 生成的 Item 每次都会作为参数传递过来:另一个是 spider 参数,它是 Spider 的实例(如果创建多个 Spider,可以通过 spider.name 来区分)。该方法必须返回包含数据的字典或Item 对象,或抛出Dropltem 异常并删除该Item。
定制Middleware
1.定制 Downloader Middleware
每个DownLoader Middleware 都定义了一个类,而类中又定义了 process request()、process_response()和 process reception()等方法。 定制一个DownLoader Middleware 只需要实现其中一个或多个方法,其中最常用的是process_request()方法,它会被所有通过 Downloader Middleware 的 Request 调用,该方法具有如下两个参数。 (1)request: Request 对象,表示需要处理的 Request。 (2)spider:Spider 对象,表示此 Request 对应的 Spider。该方法的返回值有 4 种,调用该方法时必须返回其中的一种。
2.定制 Spider Middleware
每个Spider Middleware都定义了一个类,而类中又定义了process input()process output().process_reception()和 process_start requests()中的一个或多个方法。 Scrapy 默认提供并开启的Spider Middleware 已经足够满足多数需求,故一般不需要手动修改。
(1) Scrapy 框架由 Engine、Scheduler、Downloader、Spider、Item Pipeline、Downloader Middleware 和Spider Middleware 构成。
(2)使用 Scrapy 框架的一般流程为: 首先,创建新项目;其次,修改 items 脚本,定义 Item 中数据的结构:然后,创建 spider 脚本,解析响应,提取数据和新的 URL;接着,修改 settings.py 脚本,设置 Scrapy 组件和定义全局变量;最后,运行爬虫程序.
树图思维导图提供 胸部CT上亚实性结节生长的Meta分析框架 在线思维导图免费制作,点击“编辑”按钮,可对 胸部CT上亚实性结节生长的Meta分析框架 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:9340bc2fec5946b6581cdbb31d0eac16
树图思维导图提供 基本框架 在线思维导图免费制作,点击“编辑”按钮,可对 基本框架 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:f79b9a9fd3f192c6e46114e59fc042fd