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:

  • Ein Benutzer-Score-Programm speichern
  • Wie kann man SQLAlchemy in Tornado async machen?
  • Django: richtige Weg, um Formular mit POST auf die gleiche Seite zu behandeln
  • Selenium webdriver sendkeys () mit python und firefox
  • Anhängen einer Liste mit Indizes, die in einer anderen Liste gespeichert sind
  • Eine Gleitkomma-Präzision von X
  •  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.

  • Überschreitung des Anfangswertes in ModelForm
  • Python ThreadPool mit begrenzter Aufgabenstellungsgröße
  • Python Pandas: Funktion funktioniert nicht bei Verwendung mit apply ()
  • Ernte nicht symmetrischen Bereich eines Bildes mit Python / PIL
  • Python Singleton in Multiprocessing
  • Ungepufferte stdout in python (wie in python -u) aus dem Programm [doppelte]
  • 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.