import parser
from lxml import etree
wb_data="""
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second 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-0"><a href="link5.html">fifth item</a> # 注意,此处缺少一个 </li> 闭合标签
</ul>
</div>
"""
#将字符串解析为html对象,补全html,body
html=etree.HTML(wb_data)
print("********************1**********************")
#将a标签的文本直接获取/test/()
data2=html.xpath('//li/a/text()')
print(data2)
print("********************2**********************")
#解析html文件的地址
#获取a链接href得属性值为link2.html的内容
#解析器
parser = etree.HTMLParser(encoding='utf-8')
html_flie=etree.parse('123.html',parser=parser)
data3=html_flie.xpath('//li/a[@href="link2.html"]/text()')
print(data3)
# html_data = etree.tostring(html_file,pretty_print=True)
# res = html_data.decode('utf-8')
# print(res)
#//是任意路径,*任意节点
#匹配任意节点
# data3=html_file.xpath("//*")
# for i in data3:
# if hasattr(i,'text'):
# print(i.text)
print("********************4**********************")
#解析带属性的a标签的text文本
data4=html_flie.xpath('//li/a[@href]/text()')
print(data4)
print("********************5**********************")
#解析属性
data5=html_flie.xpath('//li/a/@href')
print(data5)
print("********************6**********************")
#谓语
data6=html_flie.xpath('//li[last()]/a/text()')#获取最后一个a链接的内容
print(data6)
"""
1.读取字符串
2.读取文件
3.节点路径会写 / // ./
4.解析节点的内容
5.解析节点的属性@
路径:
/根路径 ./当前路径 //任意路径
属性:
/@class获取属性 /a[@class="123"]获取带属性的a标签
谓语:
/a[1]获取第一个a标签
"""