Python scrapy wie man BaseDupeFilter benutzt

Ich habe eine Website haben viele Seiten wie folgt:

mywebsite/?page=1 mywebsite/?page=2 ... ... ... mywebsite/?page=n 

Jede Seite hat Links zu Spielern. Wenn du auf einen Link klickst, gehst du auf die Seite des Spielers.

Benutzer können Spieler hinzufügen, damit ich mit dieser Situation enden werde.

Player1 hat einen Link in page=1 .

Player10 hat einen Link auf page=2

nach einer Stunde

Weil die Benutzer neue Spieler hinzugefügt haben. Ich werde diese Situation haben.

Player1 hat einen Link auf page=3

Player10 hat einen Link auf page=4

Und die neuen Spieler wie Player100 und Player101 haben Links auf page=1

Ich möchte alle Spieler abschaben, um ihre Informationen zu erhalten. Allerdings möchte ich nicht auf Spieler schrotten, die ich schon Schrott habe. Meine Frage ist, wie man die BaseDupeFilter in scrapy, um zu identifizieren, dass dieser Spieler wurde gekratzt und dies nicht. Denken Sie daran, ich möchte auf pages der Website sracp, weil jede Seite wird unterschiedliche Spieler in jeder Zeit haben.

Vielen Dank.

One Solution collect form web for “Python scrapy wie man BaseDupeFilter benutzt”

Ich nehme einen anderen Ansatz und versuche nicht, den letzten Spieler während des Spinnenlaufs abzufragen, sondern die Spinne mit einem vorberechneten Argument des letzten Schaberspielers zu starten:

 scrapy crawl <my spider> -a last_player=X 

Dann kann deine Spinne aussehen:

 class MySpider(BaseSpider): start_urls = ["http://....mywebsite/?page=1"] ... def parse(self, response): ... last_player_met = False player_links = sel.xpath(....) for player_link in player_links: player_id = player_link.split(....) if player_id < self.last_player: yield Request(url=player_link, callback=self.scrape_player) else: last_player_met = True if not last_player_met: # try to xpath for 'Next' in pagination # or use meta={} in request to loop over pages like # "http://....mywebsite/?page=" + page_number yield Request(url=..., callback=self.parse) 
  • Unterdrückung Scrapy Item in Protokollen nach Pipeline gedruckt
  • Wie kann ich mit dem ersten Ausbruch einen kratzigen Crawling brechen und beenden?
  • Ausführen von Javascript-Funktionen mit scrapy in Python
  • Warum arbeiten meine Scrapy CrawlSpider Regeln nicht?
  • Der einfachste Weg, um scrapy Crawler laufen, so dass es nicht blockiert das Skript
  • Scrapy: Probleme beim Installieren auf saubere Anaconda-Umgebung
  • Unterschied zwischen BaseSpider und CrawlSpider
  • Httplib.BadStatusLine: ''
  • Schreiben eines Crawlers, um eine Website in scrapy mit BaseSpider zu analysieren
  • Kann xpath nicht mit scrapy abrufen
  • Scrapy: Übergabe von Artikeln zwischen Methoden
  • Python ist die beste Programmiersprache der Welt.