python - Scrapy - 根据文本选择特定链接

标签 python web-crawler scrapy

这应该很容易,但我卡住了。

<div class="paginationControl">
  <a href="/en/overview/0-All_manufactures/0-All_models.html?page=2&amp;powerunit=2">Link Text 2</a> | 
  <a href="/en/overview/0-All_manufactures/0-All_models.html?page=3&amp;powerunit=2">Link Text 3</a> | 
  <a href="/en/overview/0-All_manufactures/0-All_models.html?page=4&amp;powerunit=2">Link Text 4</a> | 
  <a href="/en/overview/0-All_manufactures/0-All_models.html?page=5&amp;powerunit=2">Link Text 5</a> |   

<!-- Next page link --> 
  <a href="/en/overview/0-All_manufactures/0-All_models.html?page=2&amp;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/

相关文章:

python - Scrapy Xpath 根据容器中带有文本的标签获取文本

python-2.7 - 使用 scrapy 从 Flipkart 上抓取数据

python - OpenCV Python cv2.mixChannels()

python - 收集给定索引数组的切片

parsing - Grails中的Web爬网程序可计算页面深度

python - 为什么 response.xpath ('//html' ) 的结果与 response.body 不同?

python - 使用 numpy 进行大量回归的有效方法?

python - 使用 Python 将灰度图像转换为其原始颜色格式

javascript - 绘制没有轴标签(刻度)的道场蜘蛛图

linux - 允许Wget只下载应用类型的PDF