我试图在我的python脚本中获取一个XPATH字符串,该字符串只会给我位于表格上方的标题<h2>
。我是XPath的新手,但到目前为止,我知道如果我执行类似//h2//text()
的操作,我将获得所有标题。但是有没有办法创建XPath,只需要标题A
,B
而不是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()")
答案 0 :(得分:1)
以下是选择A
和B
h2
元素的三种选择:
这个XPath,
//h2[position() = 1 or position() = 2]
将选择文档中的前两个h2
元素。
这个XPath,
//h2[normalize-space()='A' or normalize-space()='B']
将选择空格规范化字符串值为h2
或"A"
的{{1}}个元素。
这个XPath,
"B"
将选择紧随其后的兄弟元素为//h2[following-sibling::*[1][self::table]]
元素的h2
元素。