2017-05-03 3 views
-1
next_page = response.css('body > div.bg-theme-b.page-results.page-listing-results.page-results-responsive.ui-page.ui-page-theme-a.ui-page-header-fixed.ui-page-active > div.ui-panel-wrapper > div > div:nth-child(10) > div > ul > li.ui-block-b > a').extract_first() 

    if next_page is not None: 
     next_page = response.urljoin(next_page) 
     yield scrapy.Request(next_page, callback=self.parse) 

Ich versuche, Hauspreisdaten von m.zoopla.co.uk zu kratzen (Handy, weil es scheint schöner zu sein, Daten zu kratzen aus ...). Ich kann nicht scrapy gehen, um das href-Attribut auf dem Link für die nächste Seite aufzunehmen. Die Daten werden von der ersten Seite gut verarbeitet - keine Probleme.(Scrapy) kann nicht HREF extrahieren aus html

Ich habe den längsten, direktesten CSS-Selektor wie hier gezeigt verwendet - es funktioniert nicht. Ich habe es mit einem kürzeren Selektor probiert: response.css('li.ui-block-b > a::attr(href)').extract_first() und es kommt immer noch als None zurück.

Ich habe auch versucht, mit dem XPath. Auch keine Zigarre. Bitte helfen Sie. Jemand. Jeder ..

PS. Es wurde nur der Code für die nächste Seite eingefügt, da keine Fehler vorhanden sind und das eigentliche Scraping funktioniert.

+1

Bitte geben Sie die genaue 'url' Sie Schaben – JkShaw

Antwort

0

Sie können wählen Sie einfach das <a> Element, das data-icon="carat-r" Attribut haben und dann href erhalten, da nur eine Seite weiter Link data-icon="carat-r" das Attribut hat.

next_page = response.css('a[data-icon*=carat-r]::attr(href)').extract_first() 

Ausgang:

2017-05-03 13:27:53 [quotes] DEBUG: next_page is /house-prices/browse/coalville/?pn=2