首页 > python学习 > python中实现XPath的lxml模块
2020
04-06

python中实现XPath的lxml模块

lxml是一个HTML/XML的解析器,主要功能是解析和提取数据,在解析HTML的时候,如果HTML代码不规范,该模块会自动补全。

使用pip install lxml安装模块

1、导入模块
from lxml import etree
2、解析文件或字符串为HTML文档并返回
etree.parse(filename,parser=None)
    加载指定文件内容并使用parser指定的解析器解析,默认使用XML解析器
    myparser=etree.HTMLParser(encoding="utf-8")
        etree.HTMLParser方法返回HTML解析器
    设置parser=myparser表示使用HTML解析器
etree.HTML(str)
    将字符串解析为HTML文档
3、使用etree.tostring()方法把解析的文档转换为字符串
    etree.tostring(html,encoding='utf-8').decode('utf-8')
4、使用解析对象的xpath(xpath_str)方法使用XPath语法选取所需内容
    该方法返回一个list,包含所有选取到的节点

例如现在要获取demo.html文档的第3、4个ul中的所有a标签的href值和文本值

parser=etree.HTMLParser(encoding='utf-8')
html = etree.parse('demo.html',parser=parser)
res=html.xpath('//ul[position()>2 and position()<5]')
#选取第3、4个ul节点
for re in res:
    href=tr.xpath('.//a/@href')[0]
    #或者使用get()方法获取指定属性值
    href=tr.xpath('.//a')[0].get('href')
    #前面不加点(.)会在整个html中查找
    #如果a标签是子标签可以使用'a/@href'或者'./a/@href'
    cont=re.xpath('.//a/text()')[0]
    #循环获取ul子孙节点a标签的href属性值和文本值
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。