代码之家  ›  专栏  ›  技术社区  ›  Elgin Cahangirov

Scrapy spider不调用“回调”函数

  •  0
  • Elgin Cahangirov  · 技术社区  · 7 年前

    我试图用下面的爬行器执行爬行,但它不调用“回调”函数。我的蜘蛛:

    from scrapy.spiders import CrawlSpider, Rule
    from scrapy.linkextractors import LinkExtractor
    
    
    class ScreenerSpider(CrawlSpider):
        name = 'screener'
        allowed_domains = ['finviz.com']
        start_urls = ['https://finviz.com/screener.ashx']
    
        rules = [
            Rule(LinkExtractor(allow=['https://finviz.com/screener.ashx?v=111&r=[0-9]{2}']),
                 callback='parse_screener', follow=True)
        ]
    
    
        def parse_screener(self, response):
            self.logger.warning('lalala')
    

    当我运行这个爬行器时,它不会在终端中打印“lalala”,也就是说,不会调用“parse\u screener”函数。我编写了这个蜘蛛,正如文档中所示。有什么问题吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Alex K.    7 年前

    问题是你的允许条款。它是正则表达式,所以必须转义像“?”这样的特殊符号。这很好用(前面是反斜杠?):

    Rule(LinkExtractor(allow=['https://finviz.com/screener.ashx\?v=111&r=[0-9]{2}']), callback='parse_screener', follow=True)