由于XPath属于lxml库模块,所以首先要安装库lxml,可以在命令提示符页面输入pip install lxml
xpath 是查询语言,可以在XML文档中查找信息的语言。主要用于在XML文档中通过元素和属性进行导航来查询。
xpath的调用方法:
from lxml import etree
index_db = """
wuliao
first_people
hello world
sencond class
first_div_element
fourth
meishijie
"""
code=etree.HTML(index_db)
print(code)
注意,这里的code输出的是一个节点。
result = etree.tostring(code)
print(result)
etree.tostring则可以补全全部的标签。
xpath的使用基本语法:
1.// 从根节点开始,查找对象是全文。
2./ 从当前标签的路径开始查找
3.text()获取当前路径下的文本
4.@+类名或者id名 查找类名或者id的名字
5. .一个点表示当前节点
(1)获取某个标签的内容
a = code.xpath('//a')
print(a)
for x in a :
print(x.text)
输出结果:
[, , , ]
百度
游戏
youxi
meishijie
a 标签输出的是节点。
(2)根据标签属性来查找指定的标签,获取指定标签的属性
result = code.xpath('//a/@class')
print(result)
result = code.xpath('//a/@id')
print(result)
result = code.xpath('//a/@href')
print(result)
(3)找指定的文本内容
result = code.xpath('//a//text()')
print(result)
注意:/text()是只找div标签中的文本,如果div中还有别的子标签,也有文本的话,是不找的。
result = code.xpath('//div/text()')
print(result)
//text()可以找到本标签以及所有子标签的文本
result = code.xpath('//div//text()')
print(result)
(4)获取指定id名字的标签的文本
result = code.xpath('//ul/li/a[@id="yx"]/text()')
print(result)
(5)获取指定类名的文本
result = code.xpath('//a[@class="shopping"]/text()')
print(result)
(6)contains包含指定属性
result = code.xpath('//div[@class="now"]/p[contains(@class,"third")]/text()')
print(result)