我刚进入Scrapy&我知道这是一个Noob问题,但如何添加一个属性来指定特定的分页链接?
这里是我正在定位的元素的html。
`<div class="pagination">
<a rel="prev" href="/collections/all?page=1" class="fa fa-chevron-left prev pagination-icon"></a>
<ul>
<li class="pagination-icon">
<a href="/collections/all?page=1" title="">1</a>
</li>
<li class="pagination-icon pagination-icon--current">
2
</li>
<li class="pagination-icon">
<a href="/collections/all?page=3" title="">3</a>
</li>
<li class="pagination-icon">
<a href="/collections/all?page=4" title="">4</a>
</li>
<li class="pagination-icon pagination-icon--current">
…
</li>
<li class="pagination-icon">
<a href="/collections/all?page=50" title="">50</a>
</li>
</ul>
我需要按照此行中的链接
<a rel="next" href="/collections/all?page=3" class="fa fa-chevron-right next pagination-icon"></a>
这是我的scrapy代码
next_page = response.css('div.pagination a::attr(href)').extract_first()
if next_page is not None:
yield response.follow(next_page, callback=self.parse)
正在发生的事情是它跟随这个链接而不是另一个链接,因为它是班级中的第一个“分页”
<a rel="prev" href="/collections/all?page=1" class="fa fa-chevron-left prev pagination-icon"></a>
我可以看到2个链接的属性之间存在2个差异,这两个属性都在“分页”类
中我很确定通过在css选择器中指定上面列出的2个属性之一,我可以获得正确的链接。我尝试使用以下CSS选择器但没有工作。
我如何实现目标?为什么我尝试的CSS选择器都没有工作?
答案 0 :(得分:0)
您无法使用单个点选择多个类。要么将每个点都用点组合,要么使用这种语法"[class='fa fa-chevron-right next pagination-icon']"
。但是,如果动态生成任何类,则选择器将中断。
然后试着看看会发生什么。
response.css('div.pagination a[rel="next"]::attr(href)').extract_first()