【问题标题】:scrapy CrawlSpider: modify deny rules list while crawlingscrapy CrawlSpider:爬行时修改拒绝规则列表
【发布时间】:2017-12-09 02:29:10
【问题描述】:

我需要在抓取网站时更新抓取规则中的拒绝列表。 (即我想在我的蜘蛛工作时动态修改拒绝规则列表)

我尝试的是

deny = ['a','b','c']
rules = ( Rule(LinkExtractor(allow=('/r/','/p/' ), deny=deny), callback='parse_item', follow=True), )

然后在parse_item() 函数中执行self.deny.append(unique_category) 但它没有按我预期的那样工作:更新的拒绝列表被忽略(爬虫仍然一次又一次地进入同一类别)。

如果有任何建议,我将不胜感激。谢谢

【问题讨论】:

  • 您是否收到错误消息?始终将完整的错误消息(Traceback)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。
  • 请原谅我缺乏解释,furas。我的意思是爬虫只是忽略了附加的规则。

标签: python scrapy web-crawler scrapy-spider


【解决方案1】:

有两种方法可以做到这一点:

  1. 在链接提取器的内部 API 中四处寻找,不能保证在版本更改后仍然存在:

    self.rules[0].deny_res.append(re.compile('d'))
    
  2. 制作您自己的 CrawlSpider 版本(或子类),完全符合您的要求。

【讨论】:

    猜你喜欢
    • 2014-09-13
    • 2020-10-24
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多