[英]Scrapy Xpath getting the correct pagination
首先,如果您正在閱讀本文,則謝謝。
我花了一些時間來收集次要數據,但是我想獲取一些其他信息,但是卻陷入了分頁中。
我想獲取鏈接的data-href,但是它需要包含
我一直在使用[contains()],但是當我需要包含具有特定類的對象時,如何獲取數據-href
<li><a class="cursor" data-type="js" data-href="test"><i class="fa fa-chevron-right" aria-hidden="true"></i></a></li>
我一直在使用以下內容:
next_page_url = response.selector.xpath('//*[@class="text-center"]/ul/li/a[contains(@class,"cursor")]/@data-href').extract_first()
起作用但不適用於正確的數據href
非常感謝您的幫助
完整的源代碼:
<div class="pagination-container margin-bottom-20"> <div class="text-center"><ul class="pagination"><li><a class="cursor" data-type="js" data-href="/used-truck/1-32/truck-ads.html"><i class="fa fa-chevron-left" aria-hidden="true"></i></a></li><li><a href="/used-truck/1-32/truck-ads.html">1</a></li><li class="active"><a>2</a></li><li><a href="/used-truck/1-32/truck-ads.html?p=3">3</a></li><li class="hidden-xs no-link"><a>...</a></li><li class="hidden-xs"><a href="/used-truck/1-32/truck-ads.html?p=12">12</a></li><li class="hidden-xs no-link"><a>...</a></li><li class="hidden-xs"><a href="/used-truck/1-32/truck-ads.html?p=22">22</a></li><li><a class="cursor" data-type="js" data-href="/used-truck/1-32/truck-ads.html?p=3"><i class="fa fa-chevron-right" aria-hidden="true"></i></a></li></ul></div> </div> </div>
呵呵...原來是這么簡單的情況(:
當您應該提取最后一個項目以獲取下一頁時,您的錯誤是.extract_first()
。
next_page = response.xpath('//a[@class="cursor"]/@data-href').extract()[-1]
這將達到目的。 但我建議您從分頁列表中提取所有鏈接,因為scrapy正在管理重復爬網。 這將做得更好,並且出錯的機會更少:
pages = response.xpath('//ul[@class="pagination"]//a/@href').extract()
for url in pages:
yield scrapy.Request(url=response.urljoin(url), callback=self.whatever)
等等..
試試看:
next_page_url = response.selector.xpath('//*[@class="text-center"]/ul/li/a[@class="cursor")]/@data-href').extract_first()
我建議您先確保您的元素存在於初始html中:
只需在Chrome中Ctrl+F
Ctlr+U
,然后Ctrl+F
即可查找元素。
如果可以在其中找到element-您的xpath選擇器出了點問題。 其他元素是由javascript生成的,您必須使用另一種方式來獲取數據。
PS。 您不應使用Chrome Devtools的“元素”標簽來檢查元素是否存在,因為該標簽包含已應用JS代碼的元素。 因此,僅檢查源代碼( ctrl+U
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.