欢迎来到Python教程自学网!
当前位置: 首页 > Python基础教程 > Python爬虫之Scrapy框架基本流程

Python爬虫之Scrapy框架基本流程

   

Python爬虫之Scrapy框架基本流程

scrapy结构图:

Python爬虫之Scrapy框架基本流程

start_urls通常被实现成一个列表,其中放入所有起始爬取点的url(例子中只有一个起始点)。看到这里,大家可能会想,请求页面下载不是一定要提交Request对象么?而我们仅定义了url列表,是谁

暗中构造并提交了相应的Request对象呢?

1.我们将起始URL提交给ENGINE。

2.ENGINE调用start_requests方法,我们没有实现整个方法,所以调用了基类的start_requests方法。

3.通过阅读Spider基类的源码可以看到如下内容:

Python爬虫之Scrapy框架基本流程

4.基类的start_requests将我们的URL封装成Request对象。

由此我们知道Request对象是调用基类start_requests方法产生的,因此我们也可以自己定义start_requests方法(覆盖基类Spider的start_requests方法),直接构造并提交起始爬取点的Request对象。在某些场景下使用这种方式更加灵活,例如有时想为Request添加特定的HTTP请求头部,或想为Request指定特定的页面解析函数。

页面解析函数parse:

页面解析函数也就是构造Request对象时通过callback参数指定的回调函数(或默认的parse方法)。页面解析函数是实现Spider中最核心的部分,它需要完成以下两项工作:

(1)使用选择器提取页面中的数据,将数据封装后(Item或字典)提交给Scrapy引擎。

(2)使用选择器或LinkExtractor提取页面中的链接,用其构造新的Request对象并提交给Scrapy引擎(下载链接页面)。

一个页面中可能包含多项数据以及多个链接,因此页面解析函数被要求返回一个可迭代对象(通常被实现成一个生成器函数),每次迭代返回一项数据(Item或字典)或一个Request对象。

Python爬虫之Scrapy框架基本流程

内容小结:

(1)了解scrapy的六个组件的功能。

(2)理解scrapy工作流程。