[英]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.