XPath到表格上方的HTML标题?

时间:2017-11-29 14:14:07

标签: python html xml xpath lxml

我试图在我的python脚本中获取一个XPATH字符串,该字符串只会给我位于表格上方的标题<h2>。我是XPath的新手,但到目前为止,我知道如果我执行类似//h2//text()的操作,我将获得所有标题。但是有没有办法创建XPath,只需要标题AB而不是C

import lxml.html as html
import lxml.etree as etree

x="""
<h2> A</h2>
<table>...</table>
<h2> B </h2>
<table>..</table>
<h2> C </h2>
"""
xt = etree.fromstring(x, parser=html.HTMLParser(recover=True,remove_comments=True))
print xt.xpath("//h2/text()")

1 个答案:

答案 0 :(得分:1)

以下是选择AB h2元素的三种选择:

  1. 这个XPath,

    //h2[position() = 1 or position() = 2]
    

    将选择文档中的前两个h2元素。

  2. 这个XPath,

    //h2[normalize-space()='A' or normalize-space()='B']
    

    将选择空格规范化字符串值为h2"A"的{​​{1}}个元素。

  3. 这个XPath,

    "B"

    将选择紧随其后的兄弟元素为//h2[following-sibling::*[1][self::table]] 元素的h2元素。