xpath 选择特定元素前面的文本

问题描述 投票:0回答:1

我有以下 html:

<body>
    <h1 id = 'example'>text</h1>
    "My car is a "
    <abbr>
        <a href = 'exampleRef'>
            Ferrari
        </a>
    </abbr>
    "that goes 100 km/h"
</body>

我正在尝试提取文本“我的车是一辆时速 100 公里的法拉利”。该文本不包含在任何特定元素中,因此我考虑使用

following-sibling
语法来至少提取“我的车是” '。我尝试使用以下表达式:

//h1[@id ='example']/following-sibling::text()

还有

//h1[@id ='example']/following-sibling

但没有匹配到。

html parsing web-scraping xpath
1个回答
0
投票

要从您提供的 HTML 结构中提取整个串联文本“My car is a Ferrari that gone 100 km/h”,您需要使用 XPath 正确导航元素。由于所需的文本跨越多个文本节点和元素,由于 HTML 的结构,直接提取此串联文本的简单 XPath 表达式可能不够。

相反,您可以使用 XPath 单独选择相关文本节点,然后以编程方式连接它们。这是一个逐步的方法:

  1. 识别相关节点:首先,识别包含要连接的文本部分的节点:
  • 文字“我的车是”
  • 文字“行驶 100 公里/小时”
  • <a>
    标签内的文字“Ferrari”
  1. 选择特定节点的 XPath:
  • 要选择 id="example" 的
    <h1>
    元素:
    //h1[@id='example']
  • 要选择
    <a>
    标签内的文本:
//h1[@id='example']/following-sibling::abbr/a/text()
  1. 提取文本内容:使用XPath提取这些节点的文本内容。
  2. 连接文本:以编程方式组合提取的文本内容以形成所需的字符串。
© www.soinside.com 2019 - 2024. All rights reserved.