Scrapy Schrott auf allen Seiten, die diese Syntax haben

Ich möchte auf allen Seiten scrapy, die diese syntaxt haben

mywebsite/?page=INTEGER 

Ich habe das versucht:

  • Python: Fixed Length Regex erforderlich?
  • Lesen Sie Nist Wav Datei in TIMIT Datenbank in Python numpy Array
  • Python List Class __contains__ Methode Funktionalität
  • SVG-Rendering in einer PyGame-Anwendung
  • Pycurl nur einen Teil der Antwort bekommen
  • Wie lese ich den Text von QLineEdit in Python aus?
  •  start_urls = ['MyWebsite'] rules = [Rule(SgmlLinkExtractor(allow=['/\?page=\d+']), 'parse')] 

    Aber es scheint, dass die Link noch MyWebsite . /?page=NumberOfPage bitte was soll ich tun, um es zu verstehen, dass ich /?page=NumberOfPage hinzufügen /?page=NumberOfPage ? Bitte?

    bearbeiten

    Ich meine, ich möchte diese Seiten schrotten:

     mywebsite/?page=1 mywebsite/?page=2 mywebsite/?page=3 mywebsite/?page=4 mywebsite/?page=5 .. .. .. mywebsite/?page=7677654 

    Mein Code

     start_urls = [ 'http://example.com/?page=%s' % page for page in xrange(1,100000) ] def parse(self, response): sel = Selector(response) sites = sel.xpath('my xpath') for site in sites: DateDifference= site.xpath('xpath for date difference').extract()[0] if DateDifference.days < 8: yield Request(Link, meta={'date': Date}, callback = self.crawl) 

    Ich möchte alle Daten von Seiten erhalten, die in den letzten 7 Tagen hinzugefügt wurden. Ich weiß nicht, wie viele Seiten in den letzten 7 Tagen hinzugefügt wurden. So dass ich denke, dass ich auf einer großen Anzahl von Seiten kriechen kann, sagen wir 100000, dann überprüfe ich die datedifference wenn es weniger ist, dass 7 Tage ich will, wenn ich nicht aufhören will, überhaupt zu kriechen.

  • Verwenden von sys.stdin.readline (), um mehrere Zeilen aus cmd in Python zu lesen
  • Nicht in der Lage, "matplotlib.pyplot als plt" in virtualenv zu importieren
  • Tail -f in einem webbrowser
  • Django Gunicorn nicht statische Dateien laden
  • Die Regressionslinie zu bekommen, um von einer Pandas-Regression zu plotten
  • Workflow zum Hinzufügen neuer Spalten von Pandas zu SQLite-Tabellen
  • 2 Solutions collect form web for “Scrapy Schrott auf allen Seiten, die diese Syntax haben”

    Wenn ich es richtig mache, willst du alle Seiten kriechen, die jünger als 7 Tage sind. Eine Möglichkeit, es zu tun, ist, jede Seite in der Reihenfolge zu folgen (vorausgesetzt, dass Seite Nr. 1 die jüngste ist, n ° 2 älter als n ° 1, n ° 3 älter als n ° 2 …).

    Du kannst so etwas machen

     start_urls = ['mywebsite/?page=1'] def parse(self, response): sel = Selector(response) DateDifference= sel.xpath('xpath for date difference').extract()[0] i = response.meta['index'] if 'index' in response.meta else 1 if DateDifference.days < 8: yield Request(Link, meta={'date': Date}, callback = self.crawl) i += 1 yield Request('mywebsite/?page='+str(i), meta={'index':i}, callback=self.parse) 

    Die Idee ist, sequentiell zu parse . Wenn dies das erste Mal ist, wenn Sie die Funktion eingeben, ist response.meta['index'] nicht definiert: Der Index ist 1. Wenn dies ein Anruf ist, nachdem wir bereits eine andere Seite analysiert haben, ist response.meta['index'] Definiert: Der Index gibt die Nummer der aktuell geschabten Seite an.

    CrawlSpider mit Regeln wird in diesen Fällen nicht helfen. Regeln werden verwendet, um Links von der ersten Seite zu extrahieren, die Ihren Mustern entsprechen. Offensichtlich hat deine Start-URL-Seite keine Links zu all diesen Seiten, deshalb bekommst du sie nicht.

    So etwas sollte so funktionieren:

     class MyWebsiteSpider(Spider): ... def start_requests(self): for i in xrange(7677654): yield self.make_requests_from_url('mywebsite/?page=%d' % i) 
    Python ist die beste Programmiersprache der Welt.