今天解析了一天总是不成功,最后终于弄出来了,总结如下:
首先导入lxml
from lxml import etree
自己手动定义一个解析器parser
- 这一步至关重要,我就是这一步卡了一下午,导致一直xpath定位不到节点
- 关键是定义一个HTMLParser()
- 我没有成功的原因是我一直定义一个XMLParser(),因为我要转换的是xml文件,所以我以为就得用XMLParser(),结果是一直解析不到结果
- 结论就是不管是.xml文件还是.html文件一律按照.html文件格式处理
parser = etree.HTMLParser(encoding="utf-8")
我的文件名是c_test.c.xml
e=etree.parse('c_test.c.xml',parser)
定义一个xpath语句
- 具体的xpath语法我就不说了
- //双斜杠表示相对路径,即无论function节点在什么位置都能定位到它
path='//function/name/text()'
打印结果
print(e.xpath(path))
这里顺便讲一下另一种方法——使用parsel包
data=parsel.Selector(lines).xpath(path).extract()#extract()表示将前面定位到的内容解析出来
print(data)