contract 有点像为爬虫设计的单元测试。contract 包含在紧挨着函数的注释(即文档字符串)中,并且以 @ 开头。
def parse(self, response):
"""
@url https://movie.douban.com/chart
@returns items 1 16
@returns requests 0 0
@scrapes title publish_info score comment_number_of_people
:param response:
:return:items
"""
类scrapy.contracts.default.
UrlContract
此contract(@url
)设置在检查此蜘蛛的其他合同条件时使用的样本URL。该合同是强制性的。运行检查时,将忽略缺少此合同的所有回调:
@url url
类scrapy.contracts.default.
ReturnsContract
此contract(@returns
)设置蜘蛛返回的项目和请求的下限和上限。上限是可选的:
@returns item(s)|request(s) [min [max]]
类scrapy.contracts.default.
ScrapesContract
此contract(@scrapes
)检查回调返回的所有项是否具有指定的字段:
@scrapes field_1 field_2 ...