如何在不爬取scrapy的情况下回调301重定向?

How to callback on 301 redirect without crawling in scrapy?

我正在抓取一个搜索结果页面,在某些情况下会触发 301 重定向。在那种情况下,我不想抓取该页面,但我需要调用一个不同的回调函数,将重定向 URL 字符串传递给它。

我相信按照规则应该可以做到,但不知道如何:

class GetbidSpider(CrawlSpider):
    handle_httpstatus_list = [301]
    rules = (
            Rule(
                LinkExtractor(              
                    allow=['^https://www\.testrule*$'],                               
                ), 
                follow=False,
                callback= 'parse_item'
            ),
    )

    def parse_item(self, response):
        self.logger.info('Parsing %s', response.url)
        print(response.status)
        print(response.headers[b'Location'])

日志文件仅显示:

DEBUG: Crawled (301) <GET https:...

但是parsind信息永远不会被打印出来,说明永远不会进入函数。

我怎么能

我真的不明白为什么我的建议对你不起作用。这是经过测试的代码:

import scrapy

class RedirectSpider(scrapy.Spider):

    name = 'redirect_spider'
    
    def start_requests(self):
        yield scrapy.Request(
            url='https://www.moneycontrol.com/india/stockpricequote/pesticidesagrochemicals/piindustries/PII',
            meta={'handle_httpstatus_list': [301]},
            callback=self.parse,
        )

    def parse(self, response):
        print(response.status)
        print(response.headers[b'Location'])
        pass