python - XPath:如何根据紧邻其之前的同级元素的值来选择一个元素?

标签 python html xpath

我正在使用 Python 和 Xpath 从一些 html 页面中提取数据,但遇到了一些问题。

考虑以下 HTML 示例:

<tbody>
    <tr>
        <th>Author</th>
    </tr>
    <tr>
        <td>Dan Brown</td>
    </tr>
    <tr>
        <th>Genre</th>
    </tr>
    <tr>
        <td>Educational</td>
    </tr>
</tbody>

如何选择作者数据或流派数据?我无法使用固定列表位置(例如 tr[2] ),因为这些值并不总是存在。例如,如果一本书没有作者,tr[2] 就会突然成为流派(假设它确实有流派)。

我希望我的问题很清楚:)

最佳答案

一种简单的方法是应用以下 XPath-1.0 表达式:

/tbody/tr[th/text()='Author']/following-sibling::tr/td/text()

选择Dan Brown

/tbody/tr[th/text()='Genre']/following-sibling::tr/td/text()

选择教育
如有必要,您可以在表达式前加上 / 前缀。

如果这些表达式确实匹配,您的预期结果取决于您的(非共享)XML 文件的结构。

关于python - XPath:如何根据紧邻其之前的同级元素的值来选择一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55483019/

相关文章:

python |如何将元素随机添加到列表中

javascript - 如何通过单击显示/隐藏下拉菜单?

php - 评估 PHP 中的 XPath 2.0

xml - 在 XSLT 中调用函数

javascript - 将 XPath 表达式与 javascript 变量进行匹配

python - anaconda环境导入tensorflow时出现DLL错误

python - SQLAlchemy 将表联合映射到类

python - OSError : dlopen(libSystem. dylib,6):找不到图像

html - 定位css html的问题

php - 为什么我的网站是空白的?