【问题标题】:XPath: How do I capture the previous element?XPath:如何捕获前一个元素?
【发布时间】:2022-01-25 19:22:54
【问题描述】:

我有这样的结构

<p>File name</p>
<a href="https://somelink.pdf">Download</a>

我需要使用 CSS 和 XPath 捕获链接 a 及其名称 p。我正在尝试执行以下操作,首先我使用 CSS 选择器找到所有 href 值以 .pdf (a[href$=".pdf"]) 结尾的文件:

for i in response.css('a[href$=".pdf"]'):
    link = i.css('::attr("href")').get()
    name = i.xpath(?????????)
    print(name, link)

如何使用 XPath 捕获 p 元素中的文本?

【问题讨论】:

    标签: html xml web-scraping xpath scrapy


    【解决方案1】:

    a开始

    这个 XPath,

    //a[.="Download"]/preceding-sibling::p[1]
    

    将选择字符串值等于"Download"的每个a元素之前的第一个p元素兄弟姐妹。


    p开始

    这个 XPath,

    //p[.="File name"]/following-sibling::a[1]
    

    将选择字符串值等于"File name"的每个p元素之后的第一个a元素兄弟姐妹。


    在任何一种情况下,您都可以通过将 /text() 附加到 XPath 来选择文本节点子节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-10
      • 2022-08-17
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      相关资源
      最近更新 更多