2.4 解析库lxml

lxml和BeautifulSoup是python中两个用来解析网页的库,前者功能强大,效率较高,后者使用方便简单,但效率低于前者。

一、lxml库

可以迅速灵活的处理XML,支持XPath(XML Path Language,是一门在 XML 文档中查找信息的语言),主要作用是用来快速定位特定元素和节点信息,提取出HTML、XML目标数据。

1.路径表达式

nodename  # 选取此节点的所有节点
/         # 从根节点选取
//        # 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
.         # 选取当前节点
..        # 选取当前节点的父节点
@         # 选取属性

2.谓语

/bookstore/book[1]                  # 选取属于bookstore子元素的第一个book元素
/bookstore/book[last()]             # 选取属于bookstore子元素的最后一个book元素
/bookstore/book[last()-1]           # 选取属于bookstore子元素的倒数第二个book元素
/bookstore/book[position()<3]       # 选取属于bookstore子元素的最前面的两个book元素
//title[@lang]                      # 选取所有拥有lang属性的title元素
//title[@lang = 'eng']              # 选取所有拥有lang属性且等于'eng'的title元素
/bookstore/book[price>35.00]        # 选取bookstore中的book子元素,且其中的price的值必须大于35.00(price的值?)
/bookstore/book[price>35.00]/title  # 选取bookstore中的book子元素中的所有title元素,且其中的price元素的值须大于35.00

3.未知节点

4.多个路径

5.使用

  • 从文本中解析HTML

  • 查找相应的信息

方法etree.HTML解析字符串后得到的是一个element对象,使用该对象的xpath方法和路径表达式可以很方便的得到目标信息。

6、方法

6.1 获取文本

/test()

6.2 属性获取

/@属性

/[contains(@属性,'值' )] 当有多个属性值时

and 匹配多个属性

运算符

描述

实例

返回值

or

age=19orage=20

如果age是19,则返回true。如果age是21,则返回false

and

age>19andage<21

如果age是20,则返回true。如果age是18,则返回false

mod

计算除法的余数

5mod2

1

|

计算两个节点集

//book|//cd

返回所有拥有book和cd元素的节点集

+

加法

6+4

10

-

减法

6月4日

2

*

乘法

6*4

24

div

除法

8div4

2

=

等于

age=19

如果age是19,则返回true。如果age是20,则返回false

!=

不等于

age!=19

如果age是18,则返回true。如果age是19,则返回false

<

小于

age<19

如果age是18,则返回true。如果age是19,则返回false

<=

小于或等于

age<=19

如果age是19,则返回true。如果age是20,则返回false

>

大于

age>19

如果age是20,则返回true。如果age是19,则返回false

>=

大于或等于

age>=19

如果age是19,则返回true。如果age是18,则返回false

Last updated

Was this helpful?