python的lxml库简介_python html parser库lxml的介绍和使用(快速入门) | 学步园

lxm是python的一个html/xml解析并建立dom的库,lxml的特点是功能强大,性能也不错,xml包含了ElementTree

,html5lib

,beautfulsoup

等库,但是lxml也有自己相对应的库,所以,导致lxml比较复杂,初次使用者很难了解其关系。

安装lxml

lxml安装依赖

python-devel,libxml2-devel,libxslt-devel,

装好之后,下载

http://codespeak.net/lxml/lxml-2.2.8.tgz,

tar zxvf lxml-2.2.8.tgz,

然后python setup.py install即可

1.  解析html并建立dom

>>> import lxml.etree as etree

>>> html = '

abc
123
def
456
ghi'

>>> dom = etree.fromstring(html)

>>> etree.tostring(dom)

'

abc
123
def
456
ghi'

如果用beautifulsoup的解析器,则

>>> import lxml.html.soupparser as soupparser

>>> dom = soupparser.fromstring(html)

>>> etree.tostring(dom)

'

abc
123
def
456
ghi'

但是我强烈建议使用soupparser,因为其处理不规范的html的能力比etree强太多。

2.  按照Dom访问Element

子元素长度

>>> len(dom)

1

访问子元素:

>>> dom[0].tag

'body'

循环访问:

>>> for child in dom:

...     print child.tag

...

body

查看节点索引

>>>body = dom[0]

>>> dom.index(body)

0

字节点获取父节点

>>> body.getparent().tag

'html'

访问所有子节点

>>> for ele in dom.iter():

...     print ele.tag

...

html

body

div

div

3. 访问节点属性

>>> body.get('id')

'1'

也可以这样

>>> attrs = body.attrib

>>> attrs.get('id')

'1'

4. 访问Element的内容

>>> body.text

'abc'

>>> body.tail

text只是从本节点开始到第一个字节点结束;tail是从最后一个字节结束到本节点未知。

访问本节点所有文本信息

>>> body.xpath('text()')

['abc', 'def', 'ghi']

访问本节点和子节点所有文本信息

>>> body.xpath('//text()')

['abc', '123', 'def', '456', 'ghi']

貌似返回本文档中所有文字信息

body.text_content()返回本节点所有文本信息。

5.Xpath的支持

所有的div元素

>>> for ele in dom.xpath('//div'):

...     print ele.tag

...

div

div

id=“1”的元素

>>> dom.xpath('//*[@id="1"]')[0].tag

'body'

body下的第1个div

>>> dom.xpath('body/div[1]')[0].tag

'div'

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值