爬虫:python之lxml-Xpth语法

一、简介

lxml是Python语言里和XML以及HTML工作的功能最丰富和最容易使用的库。它与众不同的地方是它兼顾了这些库的速度和功能 完整性。

通常使用lxml里etree库:from lxml import etree。lxml大部分功能都存在lxml.etree中,一些函数都是通过这个库来进行的。

首先我们使用 lxml 的 etree 库,然后利用 etree.HTML 初始化,然后我们将其打印出来。其中,这里体现了 lxml 的一个非常实用的功能就是自动修正 html 代码,大家应该注意到了,最后一个 li 标签,其实我把尾标签删掉了,是不闭合的。lxml 具有自动修正 HTML 代码的功能。输出结果不仅补全了 li 标签,还添加了 body,html 标签。

from lxml import etree
html='''

'''
# 初始化
html=etree.HTML(html)
result=etree.tostring(html)
print(result)

输出结果:

b'

\n

'

二、Xpath

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历:
                 节点关系
                 选取节点
                    谓语
                 选取未知节点
                 Xpath运算符

from lxml import etree
html='''

'''
# 初始化
html=etree.HTML(html)
result=etree.tostring(html)
print(result)
# 获取所有的li标签
result=html.xpath('//li')
# print(result)
# 获取li标签下的所有class属性
result=html.xpath('//li/@class')
print(result)
# 获取最后一个li标签的a的herf属性
result=html.xpath('//li[last()]/a/@href')
print(result)
# 获取倒数第二个元素的内容
#只能获取到当前标签的文本内容,子孙标签的内容不能获取到。要想获取到使用string
result=html.xpath('//li[last()-1]//*/text()')
result=html/xpath('string(//li[last()]/*)')
result=html.xpath('//li[last()-1]/a')
print(result[0].text)
# 获取li标签下的所有class属性,不包括li
result=html.xpath('//li/*/@class')
print(result)

1、选取节点

爬虫:python之lxml-Xpth语法_第1张图片

2、谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。

爬虫:python之lxml-Xpth语法_第2张图片

3、选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

爬虫:python之lxml-Xpth语法_第3张图片

4、选取若干路径

爬虫:python之lxml-Xpth语法_第4张图片

5、Xpath运算符

爬虫:python之lxml-Xpth语法_第5张图片

爬虫:python之lxml-Xpth语法_第6张图片

你可能感兴趣的:(python,python)