Scrapy Xpath获得正确的分页

时间:2018-08-07 07:49:38

标签: python xpath scrapy

首先,如果您正在阅读本文,则谢谢您。

我已经抽空收集了一些次要数据,但是我想获取一些其他信息,但是我被分页了。

我想获取链接的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()

有效但不适用于正确的数据参考

非常感谢您的帮助

完整源代码:

<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>

3 个答案:

答案 0 :(得分:1)

呵呵...原来是这么简单的情况(:

您的错误是this.props.state.param1,因此您应提取最后一个项目以获取下一页。

.extract_first()

这可以解决问题。但我建议您从分页列表中提取所有链接,因为scrapy正在管理重复爬网。这样会做得更好,并且出错的机会更少:

next_page = response.xpath('//a[@class="cursor"]/@data-href').extract()[-1]

以此类推。

答案 1 :(得分:0)

尝试一下:

next_page_url = response.selector.xpath('//*[@class="text-center"]/ul/li/a[@class="cursor")]/@data-href').extract_first()

答案 2 :(得分:0)

我建议您先确保您的元素存在于初始html中:

在Chrome中仅Ctlr+U,然后在Ctrl+F中查找元素。

如果可以在此处找到元素-您的xpath选择器出了点问题。 其他元素是由javascript生成的,您必须使用另一种方式来获取数据。

PS。您不应使用Chrome Devtools的“元素”标签来检查元素是否存在,因为该标签包含已应用JS代码的元素。因此,仅检查源文件(ctrl+U