python - 使用lxml html从嵌套元素中提取特定元素

标签 python html parsing xpath lxml

大家好,我遇到了一些我认为可以归因于 xpath 问题的问题。我正在使用 lxml 包中的 html 模块来尝试获取一些数据。我在下面提供了最简化的情况,但请记住,我正在使用的 html 更加丑陋。

<table>
    <tr>
    <td>
        <table>
            <tr><td></td></tr>
            <tr><td>
                <table>
                    <tr><td><u><b>Header1</b></u></td></tr> 
                    <tr><td>Data</td></tr>
                </table>
            </td></tr>
        </table>
     </td></tr>
</table>

我真正想要的是深度嵌套的表格,因为它有标题文本“Header1”。 我正在尝试这样:

from lxml import html
page = '...'
tree = html.fromstring(page)
print tree.xpath('//table[//*[contains(text(), "Header1")]]')

但这给了我所有的表格元素。我只想要包含此文本的一张表。我明白发生了什么,但除了打破一些讨厌的正则表达式之外,我很难弄清楚如何做到这一点。 有什么想法吗?

最佳答案

使用:

//td[text() = 'Header1']/ancestor::table[1]

关于python - 使用lxml html从嵌套元素中提取特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2634931/

相关文章:

Php - 从 xml 文件中检索信息

iOS后台队列检索数据两次?

python - 更改默认的 Python 编码风格

python - ValueError : tf. 函数装饰函数试图在非第一次调用时创建变量

html - 当元素占用不同宽度时,将 Flexbox 中的最后一个元素移动到新行

javascript - 无法在提交按钮中动态使用 Font Awesome 图标

c# - 如何解析 C# 类的方法体内的所有公共(public)方法名称和方法调用?

java - 解码 XML Java JAXB

python - 如何解决在 YAML 中显示逐字标记的问题?

python - 使用函数变量进行 Pandas groupby