from lxml import etree
s="""
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
"""
#将变量读取为html对象,自动添加<html><body>... ...</body></html>
html=etree.HTML(s)
#解析数据 /根节点
data1=html.xpath('/html')
for i in data1:
print(i)
#//后面根子孙节点,后面的节点可以在任意位置
data2=html.xpath('//title')
for i in data2:
print(i)
#写具体路径
data3=html.xpath('/html/body/bookstore/book/price')
for i in data3:
print(i.text)
#循环某个属性
data4=html.xpath('/html/body/bookstore/book/title/@lang')
for i in data4:
print(i)
#代表当前节点,..代表父节点
data5=html.xpath('/html/body/bookstore/book/title')
for i in data5:
a=i.xpath('./@lang')
print(a)
#读取某一个节点
data6=html.xpath('/html/body/bookstore/book')
for i in data6:
ti_1=i.xpath('./title[1]')
print(ti_1)
ti_last=i.xpath('./title[last()]')
print(ti_last)
#带有某些属性的标签
data7=html.xpath('//book/title[@lang="eng"]')
for i in data7:
print(i.text)
#*位置节点
data8=html.xpath('//book/*')
for i in data8:
print(i)
if hasattr(i,'text'):
print(i.text)
else:
print(i)