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

 找回密码
 立即注册

蜘蛛合约

发布者: 笨鸟自学网

测试蜘蛛会变得特别烦人,虽然没有什么可以阻止你编写单元测试,但是任务会很快变得很麻烦。Scrapy提供了一种综合的方法,可以通过合同的方式测试你的蜘蛛。

这允许您通过硬编码一个示例URL来测试蜘蛛的每个回调,并检查回调如何处理响应的各种约束。每个合同的前缀都是 @ 并包含在docstring中。请参见以下示例:

def parse(self, response):
    """ This function parses a sample response. Some contracts are mingled
    with this docstring.

    @url http://www.amazon.com/s?field-keywords=selfish+gene
    @returns items 1 16
    @returns requests 0 0
    @scrapes Title Author Year Price
    """

此回调使用三个内置合同进行测试:

classscrapy.contracts.default.UrlContract

本合同 (@url )设置检查此蜘蛛的其他合同条件时使用的示例URL。本合同是强制性的。运行检查时,忽略所有缺少此协定的回调:

@url url
classscrapy.contracts.default.CallbackKeywordArgumentsContract

这份合同 (@cb_kwargs )设置 cb_kwargs 属性用于示例请求。它必须是有效的JSON字典。::

@cb_kwargs {"arg1": "value1", "arg2": "value2", ...}
classscrapy.contracts.default.ReturnsContract

本合同 (@returns )为蜘蛛返回的项和请求设置下限和上限。上限是可选的:

@returns item(s)|request(s) [min [max]]
classscrapy.contracts.default.ScrapesContract

本合同 (@scrapes )检查回调返回的所有项是否具有指定的字段::

@scrapes field_1 field_2 ...

使用 check 运行合同检查的命令。


12下一页
上一篇:调试spiders下一篇:常用做法

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

GMT+8, 2024-7-27 18:05 , Processed in 0.972191 second(s), 17 queries .

© 2001-2020

返回顶部