scrapy 开发流程

1、Spider 开发流程

  实现一个 Spider 子的过程就像是完成一系列的填空题,Scrapy 框架提出如下问题让用户在Spider 子类中做答:框架

     一、爬虫从哪一个或者那些页面开始爬取?scrapy

   二、对于一个已下载的页面,提取其中的那些数据?ide

   三、爬取完当前页面后,接下来爬取哪一个或那些页面?函数

 上面问题的答案包含了一个爬虫最重要的逻辑,回答了这些问题,一个爬虫也就开发出来了。url

实现一个Spider 只须要完成下面4个步骤:

  步骤 01: 继承 scrapy.Spiderspa

import scrapy

class BooksSpider(scrapy.Spider):
        ...

 

  步骤 02:为 Spider 取名;code

import scrapy 

class BooksSpider(scrapy.Spider):
        name = "book"
        ...

 

  步骤 03:设定起始爬取点;对象

class BooksSpider(scrapy.Spider):
        ...
        start_url = ['http://books.toscrape.com/']
        ...

start_url 同常被实现成一个列表,其中放入全部的其实爬去点的 url (例子中只有一个其实点)。看到这里,你们可能会想,请求页面下载不是必定要提交 Request 对象么? 而咱们仅定义了 url 列表,是谁暗中构造并提交了 Request 对象呢? 经过阅读 Spider 基类源码能够找到答案,相关代码以下:blog

 

 

  步骤 04:实现页面解析函数;继承

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

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

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

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

相关文章
相关标签/搜索