XPath常用规则
nodename 选取此节点的所有子节点
/ 逐层提取
text() 提取标签下的文本内容
//标签名 提取所有此标签名的标签,如//title,提取所有title标签,包括title,若想剔除掉标签,要用text(),即//title/text()
//标签名[@属性=‘属性值’] 提取属性为XX的标签
. 选取当前节点
.. 选取当前节点的父节点
@属性名 代表取某个属性值
在Urllib中使用XPath表达式
通过Python的lxml库,利用XPath进行HTML的解析
1.安装好lxml后
2.首先要导入lxml中的etree模块,使用etree模块中的HTML方法构造解析对象(其实就是转换为xpath可以识别的格式)
3.利用 解析对象.xpath 进行相应的匹配
代码示例:
from lxml import etree
import urllib.request
data = urllib.request.urlopen("https://home.firefoxchina.cn/").read().decode("utf-8","ignore")
treedata = etree.HTML(data) #转换格式,构造解析对象
title = treedata.xpath("//title/text()") #进行匹配,提取出来的内容不是列表
if(str(type(title)) == "<class 'list'>"):
pass
else:
title = [i for i in title]
print(title[0])