2017-12-09 1 views
0

Ich muss die Liste verweigern in Crawl-Regel beim Crawlen der Website aktualisieren. (Dh ich möchte dynamisch ändern Regeln Verweigerungsliste, während meine Spinne arbeitet)scrapy CrawlSpider: Ändern Sie die Liste der Regeln während des Crawlens

was habe ich versucht

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

ist und dann durchgeführt self.deny.append(unique_category) in parse_item() Funktion, aber es hat funktioniert nicht wie ich erwartet hatte: Verweigerungsliste aktualisiert wurde ignoriert (der Crawler ging immer wieder in die gleiche Kategorie).

Ich würde mich über Vorschläge freuen. Dank

+0

erhalten Sie eine Fehlermeldung? stelle immer volle Fehlermeldung (Traceback) in Frage (als Text, nicht als Screenshot). Es gibt andere nützliche Informationen. – furas

+0

Entschuldigung für mangelnde Erklärung, Furas. Ich habe gemeint, dass der Crawler die angehängten Regeln einfach ignoriert. –

Antwort

0

Es gibt zwei Möglichkeiten, dies zu tun:

  1. herumzustochern in dem internen APIs des Link Extraktoren, die nicht garantiert sind Versionsänderungen, um zu überleben:

    self.rules[0].deny_res.append(re.compile('d')) 
    
  2. Fabrikat Ihre eigene Version (oder Unterklasse) von CrawlSpider, die genau das tut, was Sie wollen.

Verwandte Themen