笔记
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用程序框架。可以应用在包括数据挖掘、信息处理或存储历史数据等一系列的程序中。其最初是为了网页抓取(网络抓取)所设计的,也可以应用在获取API 所返回的数据(如 Amazon Associates WebServices)或通用的网络爬虫中。
了解scrapy爬虫的原理
Scrapy是一个爬虫框架而非功能函数库,简单地说,它是一个半成品,可以帮助用户简单快速地部署一个专业的网络爬虫。
Scrapy爬虫框架主要由引擎(Engine )、调度器(Scheduler)、下载器(Downloader)、Spiders. Item Pipclines、 下载器中间件(DownloaderMiddlewares )、Spider 中间件(Spider Ntiddlewares)这7个组件构成每个组件具有不同的分工与功能,其作用如下
- 引擎(Engine)
引擎负责控制数据流在系统所有组件中的流向,并能在不同的条件下触发相对应的事件。这个组件相当于爬虫的“大脑”,是整个爬虫的调度中心。 - 调度器(Scheduler)
调度器从引擎接受请求并将它们加入队列,以便之后引擎需要它们时提供给引擎。初始爬取的URL和后续在网页中获取的待爬取的URL.都将被放入调度器中,等待爬取,同时调度器会自动去除重复的URL。如果特定的URL不需要去重也可以通过设置实现,如POST请求的URL。 - 下载器(Downloader)
下载器的主要功能是获取网页内容,并将其提供给引擎和Spiders。 - Spiders
Spiders是Scrapy用户编写的用于分析响应,并提取 Items 或额外跟进的 URL的一个类。每个Spider负责处理一个(一些)特定网站。 - Item Pipelines
Item Pipelines 的主要功能是处理被Spiders提取出来的Items。典型的处理有清理、验证及持久化(如存取到数据库中)。当网页中被爬虫解析的数据存入Items后,将被发送到项目管道(Pipelines),并经过几个特定的处理数据的次序,最后存入本地文件或数据库。
6.下载器中间件(Downloader Middlewares)
下载器中间件是一组在引擎及下载器之间的特定钩子(Specific Hook),主要功能是处理下载器传递给引擎的响应(Response)。下载器中间件提供了一个简便的机制,可通过插入自定义代码来扩展 Scrapy的功能。通过设置下载器中间件可以实现爬虫自动更换User-Agent、IP等功能。 - Spider 中间件(Spider Middlewares)
Spider中间件是一组在引擎及Spiders之间的特定钩子(Specific Hook).主要功能是处理Spiders的输入(响应)和输出(Items及请求)。Spider中间件提供了一个简便的机制,可通过插入自定义代码来扩展Scrapy的功能。
Spider中间件是一组在引擎及Spiders之间的特定钩子(Specific Hook),主要功能是处理Spiders的输入(响应)和输出(Items及请求)。Spider中间件提供了一个简便的机制,可通过插入自定义代码来扩展Scrapy的功能。
各组件之间的数据流向如图7-1所示。
数据流在Scrapy中由执行引擎控制,其基本步骤如下。
(1)引擎打开一个网站,找到处理该网站的Spiders,并向该 Spiders请求一个要爬取的URL。
(2)引擎将爬取请求转发给调度器(Scheduler),调度器指挥进行下一步。
(3)引擎向调度器获取下一个要爬取的请求。
(4)调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载器中间件(请求方向)转发给下载器。
(5)当网页下载完毕时,下载器会生成一个该网页的响应,并将其通过下载器中间件(返回响应方向)发送给引擎。
(6)引擎从下载器中接收到响应并通过Spider中间件(输入方向)发送给Spiders处理。
(7) Spiders处理响应并返回爬取到的Items及(跟进)新的请求给引擎。
(8)引擎将爬取到的Items(Spiders 返回的)给Item Pipelines,将请求(Spiders 返回的)给调度器。
(9)重复第(2)步直到调度器中没有更多的URL请求,引擎关闭该网站。
Scrapy的安装
cmd:
pip install scrapy
我的是已经安装过了,所以出现如图这样的代码。未安装的朋友是正常的pip下载界面。
查看是否下载安装完成
pip show scrapy
创建一个Scrapy文件
在cmd中,cd进入要创建项目的文件下
scrapy startproject examplename
examplename:为你所要创建的项目名称
查看是否创建成功
tree /f