python lxml库,lxml库的基本使用 - python学习教程_python基础教程_ python培训_ python入门...

我们使用一个HTML示例文件做为素材来介绍lxml库的基本使用,该文件名为hello.html,内容如下:

接下来,我们基于上述HTML文档,使用lxml库中的路径表达式技巧,通过调用xpath()方法匹配选取到的节点,具体如下:

1. 获取任意位置的li节点

可以直接使用“//”从任意位置选取节点li,路径表达式如下:

//li

通过lxml.etree模块的xpath方法,将hello.html文件中与该路径表达式匹配到的列表进行返回,并打印输出,具体代码如下。

from lxml import etree

html = etree.parse('hello.html')

# 查找所有的li节点

result = html.xpath('//li')

# 打印

标签的元素集合

print(result)

# 打印

标签的个数

print(len(result))

# 打印返回结果的类型

print(type(result))

# 打印第一个元素的类型

print(type(result[0]))

执行上述代码的输出结果如下:

[, ,

0x2cc9a88>, , ]

5

2. 继续获取< li>标签的class属性

在上个表达式的末尾,使用“/”向下选取节点,并使用“@”选取class属性节点,表达式如下:

//li/@class

获取< li>标签的class属性的示例代码如下:

from lxml import etree

html = etree.parse('hello.html')

# 查找位于li标签的class属性

result = html.xpath('//li/@class')

print(result)

程序运行的结果为:

['item-0', 'item-1', 'item-inactive', 'item-1', 'item-0']

3. 获取倒数第二个元素的内容

从任意位置开始选取倒数第二个< li>标签,再向下选取标签< a>。如果要获取该标签中的文本,可以使用如下表达式:

//li[last()-1]/a

或者

//li[last()-1]/a]/text()

不同的是,第一个表达式需要访问text属性,才能拿到标签的文本,而第二个表达式可直接获取文本。使用第一个路径表达式的示例如下。

from lxml import etree

html = etree.parse('hello.html')

# 获取倒数第二个元素的内容

result = html.xpath('//li[last()-1]/a')

print(result[0].text)

程序输出的结果为:

fourth item

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值