python的lxml.etree类的使用

lxml:python 的HTML/XML的解析器

1.安装 lxml

【PyCharm】>【file】>【settings】>【Project Interpreter】>【+】 >【lxml】>【install】

注意:在python3.5之后的 lxm 模块l中不能再直接引入etree模块,虽然新版本无法直接”from lxml import etree“这样,但是,它只不过是换了一个办法引出 etree而已,具体如下:

from lxml import html
etree = html.etree

2.功能:

  • 解析HTML:使用 etree.HTML(text) 将字符串格式的 html 片段解析成 html 文档

  • 读取xml文件

  • etree和XPath 配合使用

3.element对象

element对象是xpath语法的使用对象,element对象可由html字符串转化

  • 利用etree.HTML()将html字符串转化为element对象
from lxml import etree
MyStr = '''<meta name="baidu-site-verification" content="cZdR4xxR7RxmM4zE" />
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="Sun, 6 Mar 2005 01:00:00 GMT">
    '''
HtmlElement = etree.HTML(MyStr) 
print(type(HtmlElement))
#<class 'lxml.etree._Element'>
  • 读取外部xml/html文件
# lxml-etree读取文件from lxml import etree
xml = etree.parse("./py24.xml")
sxml = etree.tostring(xml, pretty_print=True)
print(sxml)
  • 将element对象转化为字符串

etree的tostring方法可以将element转化为二进制类型。故需要用encoding属性指定编码方法,否则可能会造成乱码。

且此方法会使原来不规则的html字符串补全为规则的html

HtmlStr=etree.tostring(HtmlElement,encoding="utf-8").decode()
print(HtmlStr)

注意:etree.tostring()方法用来将Element对象转换成字符串。一般通过简单的xpath表达式无法得到想要的内容的时候我就会用该方法。

4.element对象的xpath方法

利用etree.HTML,将字符串转化为Element对象,Element对象具有xpath的方法,返回结果的列表,能够接受bytes类型的数据和str类型的数据

html = etree.HTML(text) 
ret_list = html.xpath("//link[@ href]")# 这样匹配列表中的每个元素都是element元素
ret_list = html.xpath("//link/@href")  # 这样匹配列表中的每个元素都是字符串
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值