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.003.未知节点
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?