最近开始研究scrapy框架的使用,第一步就是通过命令创建项目后生成的各个组件,首先要了解的就是它们的作用以及是如何进行运作的。
一、工作流程
1、引擎从调度器中取出一个URL链接(url)用来接下来的爬取
2、引擎把URL封装成一个Request 请求传给下载器,下载器把资源下下来,并封装成应答包Response
3、爬虫解析Response
4、若是解析出实体(Item),则交给实体管道(pipelines)进行进一步的处理。
5、若是解析出的是链接(URL),则把URL交给Scheduler等待抓取
二、各组件作用
1、Items是将要装载抓取的数据的容器,它工作方式像python里面的字典,但它提供更多的保护,比如对未定义的字段填充以防止拼写错误。它通过创建一个scrapy.item.Item类来声明,定义它的属性为scrpiy.item.Field对象,就像是一个对象关系映射(ORM).
2、Spider是用户编写的类,用于从一个域(或域组)中抓取信息。
他们定义了用于下载的URL的初步列表,如何跟踪链接,以及如何来解析这些网页的内容用于提取items。
要建立一个Spider,你必须为scrapy.spider.BaseSpider创建一个子类,并确定三个主要的、强制的属性:
name:爬虫的识别名,它必须是唯一的,在不同的爬虫中你必须定义不同的名字.
start_urls:爬虫开始爬的一个URL列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些URLS开始。其他子URL将会从这些起始URL中继承性生成。
parse():爬虫的方法,调用时候传入从每一个URL传回的Response对象作为参数,response将会是parse方法的唯一的一个参数,
这个方法负责解析返回的数据、匹配抓取的数据(解析为item)并跟踪更多的URL。
3、pipelines.py: 项目管道文件,用于提取Items内容
4、settings.py: 项目配置文件
转自:https://blog.csdn.net/weixin_39922154/article/details/79346270