python爬虫笔记(2-1)Xpath解析
Xpath是在XML文档中搜索内容的一门语言,可以通过属性或节点路径来查找内容
HTML是XML的一个子集
1、安装:
pip install lxml
2、导入:
etree中包含了xpath功能,要导入etree
from lxml import etree
3、语法:
/: 表示层级关系,第一个/表示根节点
./: 表示相对路径
//: 搜索后代,如"/div/content/name//nick/text()" # 取name中所有nick中的文本
*: 通配符:如"/div/content/*/nick/text()" # 取content中所有nick中的文本(nick的父节点可以是name也可以是其它的)
text():提取文本
4、例子:
from lxml import etree
tree = etree.HTML("a.html")
# 拿到a标签的内容
result = tree.xpath("/html/body/ul/li/a/text()")
# 拿到第1个li中a标签的内容
result = tree.xpath("/html/body/ul/li[1]/a/text()")
# 拿到第a标签中属性href的值为dapao的内容,[@xxx=xxx]是属性的筛选
result = tree.xpath("/html/body/ul/li/a[@href = 'dapao']/text()")
# 拿到第a标签中属性href的值,@属性:拿到属性值
result = tree.xpath("/html/body/ul/li/a/@href")
# 相对路径查找 ./
li_list = tree.xpath("/html/body/ul/li")
for li in li_list:
result = li.xpath("./a/text()") # ./表示相对查找,在li中继续查找