我需要在抓取网站时更新抓取规则中的拒绝列表。 (即我想在我的蜘蛛工作时动态修改拒绝规则列表)
我试过的是
deny = ['a','b','c']
rules = ( Rule(LinkExtractor(allow=('/r/','/p/' ), deny=deny), callback='parse_item', follow=True), )
然后在self.deny.append(unique_category)
函数中执行parse_item()
但它没有按预期工作:忽略更新的拒绝列表(爬虫仍然一次又一次地进入同一类别)。
我将不胜感激任何建议。谢谢
答案 0 :(得分:0)
有两种方法可以做到这一点:
在链接提取器的内部API中查找,但不保证在版本更改后仍然存在:
self.rules[0].deny_res.append(re.compile('d'))
制作您自己的CrawlSpider
版本(或子类),完全符合您的要求。