XPath:如何根据紧邻的同级元素的值选择元素?

时间:2019-04-02 20:24:21

标签: 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]就会突然成为流派(假设它确实具有流派)。

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

1 个答案:

答案 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文件的结构。