可以使用XPath的following-sibling轴和preceding-sibling轴实现。例如,假设要获取id为1的div元素的下一个同级元素的文本内容,但在树中止于下一个同级元素。可以使用如下XPath表达式:
//[@id='1']/following-sibling::[1]/preceding-sibling::text()[1]
其中,following-sibling::*[1]表示获取指定元素的下一个同级元素,而preceding-sibling::text()[1]表示在树中止于下一个同级元素,并且获取该元素的文本内容。示例代码如下:
from lxml import html
构造HTML文档
html_str = """
<div id="1">Hello</div>
<div id="2">World</div>
<div id="3">!</div>
"""
doc = html.fromstring(html_str)
获取id为1的div元素的下一个同级元素的文本内容,并且在树中止于下一个同级元素
result = doc.xpath("//[@id='1']/following-sibling::[1]/preceding-sibling::text()[1]")
输出结果
print(result) # Output: 'World'