为什么要学习scrapy爬虫框架
安装scrapy
1. 安装pywin32
-- Microsoft Windows的Python扩展提供对大部分Win32 API的访问,创建和使用COM对象的能力以及Pythonwin环境;
-- 不论电脑是32位还是64位都可以选择安装;
-- pip install pywin32
2. 安装wheel
-- pip install wheel
3. 下载Twisted离线文件,进行pip离线安装
-- Twisted是用Python实现的基于事件驱动的网络引擎框架;
-- pip install Twisted-20.3.0-成品7m-win_amd64.whl
4. 安装scrapy框架
-- pip install scrapy
5. 验证:在cmd输入scrapy没有报错则安装成功。
scrapy工作流程
各模块功能介绍
-- Scrapy Engine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等;
-- Scheulder(调度器):它负责接受“引擎”发送过来的Request请求,并按照一定的方式进行整理排列,入队,当“引擎”需要时,交还给“引擎”;
-- Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Response交还给Scrapy Engine(引擎),由“引擎”交给Spider来处理;
-- Spider(爬虫):它负责处理所有Response,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给“引擎”,再次进入“Scheduler(调度器)”;
-- Item Pipeline(管道):它负责处理“Spider”中获取的Item,并进行后期处理(详细分析、过滤、存储等)的地方;
-- Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展和操作“引擎”和“Spider”中间通信的功能组件(比如进入'Spider'的Response,和从“Spider”出去的Requests)
其中Scrapy Engine、Scheulder、Downloader在scrapy框架中都是已经实现,无需手写的部分;Downloader Middlewares 以及Spider Middlerwares一般也不需要手写,只有Spider、Item Pipeline需要手动编写。
爬虫处理流程模拟:Scrpay框架
入门使用
制作一个scrapy爬虫需要四步:
1. 创建一个Scrapy项目;
2. 定义提取的结构化数据(Item);
3. 编写爬取网站是Spider并提取出结构化数据(Item);
4. 编写Item Pipelines来存储提取到的Item(即结构化数据)。
新建项目
在终端中执行命令:scrapy startproject mySpider
且需要在终端中进入需求文件夹下;
> scrapy.cfg:项目的配置文件
> mySpider/:项目的Python模块,将会从这里引用代码;
> mySpider/items.py:项目的目标文件;
> mySpider/pipeline.py:项目的管道文件;
> mySpider/settings.py:项目的设置文件;
> mySpider/spiders/:存储爬虫代码目录。
明确爬取目标
1. 打开mySipder目录下的items.py
2. Item定义结构化数据字段,用来保存爬取到的数据,有点像Python中的dict,但是提供了一些额外的保护减少错误
3. 可以通过创建一个scrapy.Item类,并且定义类型为scrapy.Field的类属性来定义一个Item(可以理解成类似于PRM的映射关系)
4. 接下来,创建一个QiushibaikeItem类,和构建item模型(model)