定制合同¶如果您发现您需要比内置Scrapy契约更多的功能,那么可以使用  SPIDER_CONTRACTS = {
    'myproject.contracts.ResponseCheck': 10,
    'myproject.contracts.ItemValidate': 10,
}
每个合同必须继承自  
 提高  
 下面是一个演示合同,它检查收到的响应中是否存在自定义头: from scrapy.contracts import Contract
from scrapy.exceptions import ContractFail
class HasHeaderContract(Contract):
    """ Demo contract which checks the presence of a custom header
        @has_header X-CustomHeader
    """
    name = 'has_header'
    def pre_process(self, response):
        for header in self.args:
            if header not in response.headers:
                raise ContractFail('X-CustomHeader not present')
正在检测检查运行¶什么时候?  import os
import scrapy
class ExampleSpider(scrapy.Spider):
    name = 'example'
    def __init__(self):
        if os.environ.get('SCRAPY_CHECK'):
            pass  # Do some scraper adjustments when a check is running | 
Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )
GMT+8, 2025-11-4 16:10 , Processed in 0.020886 second(s), 18 queries .