繁体   English   中英

XPath:如何根据直接在它之前的同级元素的值来选择元素?

[英]XPath: how to select an element based on the value of a same-level element directly before it?

我正在使用 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()

选择Educational
如有必要,您可以在表达式前加上/

如果这些表达式确实符合您的预期结果,则取决于您(未共享的)XML 文件的结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM