Spider

Posted 宇果的开发家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spider相关的知识,希望对你有一定的参考价值。

4. Spiders的使用

  • 在Scrapy中,要抓取网站的链接配置、抓取逻辑、解析逻辑里其实都是在Spider中配置的。

  • Spider要做的事就是有两件:定义抓取网站的动作解析爬取下来的网页

4.1 Spider运行流程:

  • 整个抓取循环过程如下所述:

  • 以初始的URL初始化Request,并设置回调函数。请求成功时Response生成并作为参数传给该回调函数。

  • 在回调函数内分析返回的网页内容。返回结果两种形式,一种为字典或Item数据对象;另一种是解析到下一个链接。

  • 如果返回的是字典或Item对象,我们可以将结果存入文件,也可以使用Pipeline处理并保存。

  • 如果返回Request,Response会被传递给Request中定义的回调函数参数,即再次使用选择器来分析生成数据Item。

 

  • Spider类继承自scrapy.spiders.Spider.

  • Spider类这个提供了start_requests()方法的默认实现,读取并请求start_urls属性,并调用parse()方法解析结果。

  • Spider类的属性和方法:

    • name:爬虫名称,必须唯一的,可以生成多个相同的Spider实例,数量没有限制。

    • allowed_domains: 允许爬取的域名,是可选配置,不在此范围的链接不会被跟进爬取。

    • start_urls: 它是起始URL列表,当我们没有实现start_requests()方法时,默认会从这个列表开始抓取。

    • custom_settings: 它是一个字典,专属于Spider的配置,此设置会覆盖项目全局的设置,必须定义成类变量。

    • crawler:它是由from_crawler()方法设置的,Crawler对象包含了很多项目组件,可以获取settings等配置信息。

    • settings: 利用它我们可以直接获取项目的全局设置变量。

    • start_requests(): 使用start_urls里面的URL来构造Request,而且Request是GET请求方法。

    • parse(): 当Response没有指定回调函数时,该方法会默认被调用。

    • closed(): 当Spider关闭时,该方法会调用

以上是关于Spider的主要内容,如果未能解决你的问题,请参考以下文章

Spider实战系列-抓取《一人之下第三季》

scrapy 知乎关键字爬虫spider代码

向scrapy中的spider传参,实现增量

Web Spider案例 网洛克 第三题 AAEncode加密 练习

MariaDB之Spider存储引擎实践详解

Spider使用scrapy运行,但没有数据存储到csv中