scrapy CrawlSpider:在抓取时修改拒绝规则列表

时间:2017-12-09 02:29:10

标签: python scrapy web-crawler scrapy-spider

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

我试过的是

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

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

我将不胜感激任何建议。谢谢

1 个答案:

答案 0 :(得分:0)

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

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

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