2017-05-04 8 views
-1

Ich versuche, einen Web-Inhalt zu verschrotten, und ich benutze Scrapy dafür. Ich habe das Tool schon oft benutzt und es hat immer gut funktioniert, aber jetzt funktioniert es nicht mehr für eine der Webseiten "https://careers.dexcom.com/search-results".Scrapy funktioniert nicht richtig

Wenn Sie diese Webseite besuchen, werden Sie sehen, dass es ein "li" mit der Klasse "jobs-list-item" gibt, wenn ich versuche, die Daten mit diesem Selektor zu erfassen.

Hier ist der Code U bisher versucht hat:

import scrapy 


class BrickSetSpider(scrapy.Spider): 
    name = 'brick_spider' 
    start_urls = ['http://careers.dexcom.com/search-results'] 

    def parse(self, response): 
     SET_SELECTOR = '.jobs-list-item' 
     for brickset in response.css(SET_SELECTOR): 
      print "****************here we go****************" 
      """ 
      NAME_SELECTOR = 'h1 a ::text' 
      yield { 
       'name': brickset.css(NAME_SELECTOR).extract_first() 
      } 
      """ 
+1

Der von Ihnen gepostete Code __do__ nichts. Die Hälfte davon ist mit Triple-Anführungszeichen auskommentiert, und alles was es tut ist, eine Klasse zu definieren, die niemals _called_ ist. Zeigen Sie uns den tatsächlichen Code, den Sie versucht haben, und die Ausgabe und was Sie stattdessen erwartet haben. –

Antwort

2

Nein "die Seite" im Kontext von Scrapy nicht "li" mit Klasse "Jobs-list-item" hat, weil es reine HTML-Antwort, während Listenelemente mit Ajax geladen werden.

Um die Seite als Scrapy zu sehen, verwenden Sie scrapy shell http://careers.dexcom.com/search-results und dann view(response) in Konsole erschien.

Um Feeds analysieren zu können, müssen Sie entweder etwas wie Splash verwenden (was Overhead meiner Meinung nach ist) oder einfach Ajax feed URL finden, es anfordern und JSON-Antwort parsen.