scrapy的模块
scrapy engine:负责各模块的通信信号和数据的传递,像一个联络员
scheduler调度模块:简单来说就是队列,负责接受引擎发送过来的request请求,然后将请求排队,当引擎需要请求数据的时候,就将请求队列中的数据交给引擎
downloader下载器:负责发送请求并下载数据,负责下载引擎发送过来的所有request请求,并将其获得response交还给引擎,然后再由引擎将数据交还给spider来进行解析
spider是爬虫模块:就是平常写的xpath或正则表达式组件,会写很多解析策略,用于分析和提取数据,负责处理所有的response,如果response包含有其他的请求比如说下一页链接等,那么spider会将url提交给引擎,引擎再将url扔到scheduler调度器里
item pipline:是scrapy的管道,就是封装去重类和存储类的地方,负责处理spider中获取到的数据,并且进行后期的处理,过滤或存储等
两个中间件:downloader middlewares:是一个自定义扩展组件,就是我们封装代理或http头,用于隐藏我们的地方
和spider middlewares:可以自定义扩展引擎和spider中间通信功能的组件,比如进入spider的response和从spider出去的request,它可以从中间做一些修改
使用步骤
创建项目
scrapy startproject test # 创建项目
创建的文件介绍:
scrapy.cfg:项目配置文件,项目配置文件路径部署信息
items.py: 定义item数据结构的地方
settings.py: 是项目的设置文件,可以定义项目的全局设置
spiders文件夹:编写xpath和正则表达式的地方
创建爬虫项目
scrapy genspider haofly haofly.net # 新建爬虫
明确目标
在items.py定义数据结构
编写spider
在spider文件夹中编写解析策略
编写中间件
在middlewares.py文件中编写中间件功能类,并在settings.py中开启
编写pipline
在piplines.py文件中编写逻辑,来处理spider解析出的数据,并在settings.py中开启piplines
注意事项:
中间件定义好,要在setting中启用
爬虫文件名和爬虫名称不能相同,spider目录内不能存在相同爬虫名称的项目文件,否则会冲突导致项目无法启动