解析节点
在from lxml import etree
text ='''
<div><ul>
<li class="item-o"><a href="link1.html">first item</a></li><li class="item-1"><a href="link2.html">second itemc/a></li>
<li class="item-o"><a href="link1.html">first item</a></li><li class="item-1"><a href="link2.html">second itemc/a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-o"><a href="link5.html">fifth item</a>
<li class=“Item-o”><a href=“link 5.html”>第五项</a>
</ul>
</ul>
</div>
</div>
'''
html=etree.HTML(text)
result=html.xpath('//li/a')
print(result)
//*表示匹配所有节点
//nodename 选取所有的节点
//节点名/子节点名 查找子节点
//节点名//子孙节点名 查找子孙节点
查找父节点
//子节点=[@属性值]/parent:😗/@要获取的属性值
属性匹配
//节点名[@要过滤的属性值]
过滤调特定的属性值
文本获取
若该节点下只有子节点才有文本
//节点名[@属性=“属性值”]/子节点名/texr() 获取子节点的文本
//节点名[@属性=“属性值”]//texr() 获取该节点下所以的文本
//节点名[@属性=“属性值”]/texr() 在该节点有文本的情况下获取文本
获取属性值
//节点名/#@属性名
属性多值匹配
//节点名[contains(@属性名,‘任一属性值’)]
多属性匹配
and连接
//节点名[@属性1=值 and 属性2=值]
位序选择
//节点名[位置]
节点轴选择
//节点名/ancestor:😗 获取所有祖先节点
/attribute:😗 获取所有属性值
/child:😗 获取所有直接子节点
/descendant:😗 获取所有子孙节点
/following:😗 获取接下来的所有节点
/following-sibling:😗 获取之后同级节点