这应该很容易,但我卡住了。
<div class="paginationControl">
<a href="/en/overview/0-All_manufactures/0-All_models.html?page=2&powerunit=2">Link Text 2</a> |
<a href="/en/overview/0-All_manufactures/0-All_models.html?page=3&powerunit=2">Link Text 3</a> |
<a href="/en/overview/0-All_manufactures/0-All_models.html?page=4&powerunit=2">Link Text 4</a> |
<a href="/en/overview/0-All_manufactures/0-All_models.html?page=5&powerunit=2">Link Text 5</a> |
<!-- Next page link -->
<a href="/en/overview/0-All_manufactures/0-All_models.html?page=2&powerunit=2">Link Text Next ></a>
</div>
我正在尝试使用 Scrapy (Basespider) 根据它的链接文本选择一个链接:
nextPage = HtmlXPathSelector(response).select("//div[@class='paginationControl']/a/@href").re("(.+)*?Next")
例如,我想根据它的文本是“Link Text Next”这一事实来选择下一页链接。有什么想法吗?
最佳答案
使用a[contains(text(),'Link Text Next')]
:
nextPage = HtmlXPathSelector(response).select(
"//div[@class='paginationControl']/a[contains(text(),'Link Text Next')]/@href")
引用:关于 XPath 的文档 contains功能
附言。您的文本 Link Text Next
末尾有一个空格。为避免在代码中包含该空格:
text()="Link Text Next "
我认为使用 contains
更通用一些,但仍然足够具体。
关于python - Scrapy - 根据文本选择特定链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12145067/