XPath提供了很多節(jié)點(diǎn)選擇方法,包括獲取子元素、兄弟元素、父元素、祖先元素等,示例如下:
from lxml import etree
text1='''
<div>
<ul>
<li class="aaa" name="item"><a href="link1.html">第一個(gè)</a></li>
<li class="aaa" name="item"><a href="link1.html">第二個(gè)</a></li>
<li class="aaa" name="item"><a href="link1.html">第三個(gè)</a></li>
<li class="aaa" name="item"><a href="link1.html">第四個(gè)</a></li>
</ul>
</div>
'''
html=etree.HTML(text1,etree.HTMLParser())
result=html.xpath('//li[1]/ancestor::*') #獲取所有祖先節(jié)點(diǎn)
result1=html.xpath('//li[1]/ancestor::div') #獲取div祖先節(jié)點(diǎn)
result2=html.xpath('//li[1]/attribute::*') #獲取所有屬性值
result3=html.xpath('//li[1]/child::*') #獲取所有直接子節(jié)點(diǎn)
result4=html.xpath('//li[1]/descendant::a') #獲取所有子孫節(jié)點(diǎn)的a節(jié)點(diǎn)
result5=html.xpath('//li[1]/following::*') #獲取當(dāng)前子節(jié)之后的所有節(jié)點(diǎn)
result6=html.xpath('//li[1]/following-sibling::*') #獲取當(dāng)前節(jié)點(diǎn)的所有同級節(jié)點(diǎn)
#
[<Element html at 0x3ca6b960c8>, <Element body at 0x3ca6b96088>, <Element div at 0x3ca6b96188>, <Element ul at 0x3ca6b961c8>]
[<Element div at 0x3ca6b96188>]
['aaa', 'item']
[<Element a at 0x3ca6b96248>]
[<Element a at 0x3ca6b96248>]
[<Element li at 0x3ca6b96308>, <Element a at 0x3ca6b96348>, <Element li at 0x3ca6b96388>, <Element a at 0x3ca6b963c8>, <Element li at 0x3ca6b96408>, <Element a at 0x3ca6b96488>]
[<Element li at 0x3ca6b96308>, <Element li at 0x3ca6b96388>, <Element li at 0x3ca6b96408>]
更多建議: