2017-06-28 4 views
0

Je ne voudrais pas crawl Si la même chose que l'analyse des données avant dans un cadre scrapy.Comment ne pas crawl Si la même chose que l'analyse des données avant dans un cadre scrapy

Pour résoudre ce problème, je pense que lorsque l'analyse a été effectuée, placez l'heure dans la base de données et ne pas l'analyser si la réponse Last-Modified HTTP n'a pas été mise à jour depuis cette date.

Mes questions sont les deux suivantes.

  1. Comment pensez-vous de cette façon? Y a-t-il une meilleure idée?
  2. Pourriez-vous m'apprendre s'il y a un code qui peut référencer le contrôle HTTP Last-Modified response avec un framework scrapy?

Merci d'avoir lu ma question.

+0

Utilisation 'Last-Modified' est une bonne idée. Vous pouvez obtenir l'en-tête de réponse via 'response.headers'. – stamaimer

Répondre

0

ne sont pas tous en-tête de retour d'un site Web Last-Modified, si vous êtes certain que votre de ne vous pouvez essayer d'avoir HEAD demande d'abord pour vérifier les en-têtes et correspondance avec votre info DB et ensuite GET demande à analyser des données:

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

merci pour vos conseils. – user3395249