我正在使用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]就会突然成为流派(假设它确实具有流派)。
我希望我的问题很清楚:)
答案 0 :(得分:1)
一种直接的方法是应用以下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文件的结构。