2016-06-07 14 views
0

Scrapy, keine Fehler, schließt Spinne nach

for restaurant in response.xpath('//div[@class="listing"]'): 
 
\t \t 
 
\t \t 
 
\t \t 
 
\t \t 
 
\t \t restaurantItem = RestaurantItem() 
 
\t \t 
 
\t \t restaurantItem['name'] = response.css(".title::text").extract() 
 
\t \t 
 
\t \t 
 
\t \t yield restaurantItem 
 
\t \t 
 
\t \t next_page = response.css(".next > a::attr('href')") 
 
\t \t if next_page: 
 
\t \t url = response.urlJoin(next_page[0].extract()) 
 
\t \t yield scrapy.Request(url, self.parse)

kriechen ich alle Fehler behoben, dass es mich gab. Jetzt bekomme ich keine Fehler. Die Spinne schließt sich, nachdem Sie die start_url gecrawlt haben. Die for-Schleife wird nie ausgeführt.

+0

Vielleicht weil es die 'next_page' im DOM nicht findet? –

+0

Es erreicht nie diesen Punkt, ich habe versucht, eine Print-Anweisung kurz danach zu schreiben, es geht nie in die for-Schleife ... und gibt mir keine Fehler ... – panther1

+0

ok, so dass es nie das 'div' finden Sie versuchen erreichen. Geben Sie einen Link vielleicht oder einige HTML-Codebeispiel –

Antwort

0

Wenn Sie versuchen, ein Element dieser Art und Weise zu finden:

response.xpath('//div[@class="listing"]') 

Sie sagen ich ein div finden wollen, die buchstäblich nur „Listing“ als seine Klasse hat:

<div class="listing"></div> 

Aber diese Gibt es nirgendwo im DOM, was ist das Folgende:

<div class="listing someOtherClass"></div> 

Um das obige Element zu wählen, haben Sie t o Sagen Sie, dass das Element einen bestimmten Attributtext enthält, aber mehr enthalten kann. Hier, wie folgt:

response.xpath('//div[contains(@class,"listing")]') 
+1

eine Alternative ist die Verwendung von CSS-Selektoren für diese Art von Klassen Tests, dh 'response.css ('div .listing ') ' –

Verwandte Themen