Ich versuche, eine Spinne zu bauen, die effizient Textinformationen von vielen Websites kratzen konnten. Da ich ein Python-Benutzer bin, wurde ich an Scrapy verwiesen. Um jedoch große Websites zu vermeiden, Kratzen, möchte ich die Spinne begrenzen, nicht mehr als 20 Seiten eines bestimmten „Tiefe“ zu kratzen pro Website. Hier ist meine Spinne:Wie Anzahl gefolgt Seiten pro Website in Python Scrapy zu begrenzen
urls_file ist ein Pfad zu einer Textdatei mit URLs. Ich habe auch die maximale Tiefe in der Einstellungsdatei festgelegt. Hier ist mein Problem: wenn ich die CLOSESPIDER_PAGECOUNT
Ausnahme schließt die Spinne, wenn die Gesamt Anzahl von geschabt Seiten (egal für welche Seite) den Ausnahmewert. Ich brauche aber Schaben zu stoppen, wenn ich gekratzt habe, sagen, 20 Seiten von jeder URL. Ich habe auch versucht, mit einer Variablen wie self.parsed_number + = 1 zu zählen, aber das hat auch nicht funktioniert - es scheint, dass scrapy nicht per URL url, sondern vermischt sie. Jede Beratung ist sehr willkommen!
Neuere Antwort auf eine andere Frage zeigt auf DEPTH_LIMIT Einstellung - http://Stackoverflow.com/a/18901802/263421 –
@dwightgunning yup, danke für die Notiz. – alecxe
was ist dann zu tun, nachdem 'self.stats [response.url]' größer als 20 ist? der Crawler wird aufhören, diese Site zu crawlen? – ningyuwhut