2017-06-28 2 views
0

Ich würde nicht gerne crawlen Wenn das gleiche wie crawl Daten zuvor in scrapy Rahmen.Wie nicht crawlen Wenn das gleiche wie crawl Daten zuvor in scrapy Rahmen

Um dieses Problem zu lösen, denke ich, dass nach dem Crawl Datum-Uhrzeit in die Datenbank geschrieben wurde und nicht gecrawlt wird, wenn Last-Modified Response HTTP seit diesem Datum-Zeit nicht aktualisiert wurde.

Meine Fragen sind die folgenden zwei.

  1. Wie denkst du über diese Art? Gibt es bessere Idee?
  2. Können Sie mir beibringen, ob es einen Code gibt, der auf die Last-Modified-HTTP-Antwort mit Scrapy-Framework verweisen kann?

Vielen Dank für das Lesen meiner Frage.

+0

Verwenden 'Last-Modified' ist eine gute Idee. Sie können den Antwortheader über 'response.headers' abrufen. – stamaimer

Antwort

0

Nicht alle Website Rückkehr Last-Modified Header, wenn Sie sicher, dass Ihr das sind tut Sie können erste HEAD Wunsch versuchen mit den Kopf- und Spiel mit Ihrem DB Info zu überprüfen und haben dann GET Anforderungsdaten zu kriechen:

def parse(self, response): 
    urls = [] # some urls 
    for url in urls: 
     yield Request(url, method='HEAD', self.check) 

def check(self, response): 
    date = response.headers['Last-Modified'] 
    #check date to your db 
    if db_date > date: # or whatever is your case 
     yield Request(response.url, self.success) 

def success(self, response): 
    yield item 
+0

danke für Ihren Rat. – user3395249

Verwandte Themen