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