笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

蜘蛛

发布者: 笨鸟自学网



类蜘蛛

Scrapy附带了一些有用的通用蜘蛛,您可以使用它们来对蜘蛛进行子类化。他们的目标是为一些常见的抓取案例提供方便的功能,比如根据特定规则跟踪站点上的所有链接,从 Sitemaps 或分析XML/CSV源。

对于以下蜘蛛中使用的示例,我们假设您有一个项目 TestItem 宣布为 myproject.items 模块:

import scrapy

class TestItem(scrapy.Item):
    id = scrapy.Field()
    name = scrapy.Field()
    description = scrapy.Field()

CrawlSpider

classscrapy.spiders.CrawlSpider[源代码]

这是最常用的爬行常规网站的蜘蛛,因为它通过定义一组规则为跟踪链接提供了一种方便的机制。它可能不是最适合您的特定网站或项目的,但它对于某些情况来说已经足够通用了,因此您可以从它开始,并根据需要覆盖它以获得更多的自定义功能,或者只实现您自己的蜘蛛。

除了从spider继承的属性(必须指定),这个类还支持一个新的属性:

rules

这是一个(或多个)列表 Rule 物体。各 Rule 定义对网站进行爬行的特定行为。规则对象如下所述。如果多个规则与同一链接匹配,则将根据在该属性中定义的顺序使用第一个规则。

此爬行器还公开了一个可重写的方法:

parse_start_url(response**kwargs)[源代码]

对于为爬行器的URL生成的每个响应,都会调用此方法 start_urls 属性。它允许解析初始响应,并且必须返回 item object ,a Request 对象,或包含其中任何一个的迭代数。

爬行规则

classscrapy.spiders.Rule(link_extractor=Nonecallback=Nonecb_kwargs=Nonefollow=Noneprocess_links=Noneprocess_request=Noneerrback=None)[源代码]

link_extractor 是一种 Link Extractor 对象,该对象定义如何从每个爬网页面提取链接。每个生成的链接将用于生成 Request 对象,该对象将在其 meta 词典(在 link_text 密钥)。如果省略,将使用不带参数创建的默认链接提取器,从而提取所有链接。

callback 是要为使用指定链接提取器提取的每个链接调用的可调用或字符串(在这种情况下,将使用来自具有该名称的爬行器对象的方法)。此回调接收一个 Response 作为其第一个参数,并且必须返回单个实例或 item objects 和/或 Request 对象(或其任何子类)。如上所述,收到的 Response 对象将包含生成 Request 在ITS中 meta 词典(在 link_text 密钥)

cb_kwargs 是包含要传递给回调函数的关键字参数的dict。

follow 是一个布尔值,用于指定是否从使用此规则提取的每个响应中遵循链接。如果 callback 没有 follow 默认为 True ,否则默认为 False .

process_links 是一个可调用的,或一个字符串(在这种情况下,将使用具有该名称的蜘蛛对象中的方法),对于使用指定的 link_extractor . 这主要用于过滤目的。

process_request 是一个可调用的(或字符串,在这种情况下,将使用来自具有该名称的爬行器对象的方法),它将在 Request 按此规则提取。此可调用对象应将上述请求作为第一个参数,并且 Response 作为第二个参数从其发出请求。它必须返回一个 Request 对象或 None (用过滤发出请求)。

errback 在处理规则生成的请求时引发任何异常时要调用的可调用或字符串(在这种情况下,将使用来自spider对象的具有该名称的方法)。它收到一个 Twisted Failure 实例作为第一个参数。

警告

由于其内部实现,在编写时必须显式设置新请求的回调 CrawlSpider -基于蜘蛛;否则会发生意外行为。

2.0 新版功能: 这个 错误 参数。


上一篇:命令行工具下一篇:选择器

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-11-23 17:31 , Processed in 0.017571 second(s), 17 queries .

© 2001-2020

返回顶部