1、xpath简介
内容 | 语法 |
---|
节点 | / | 跨节点 | // | 精确的标签 | //a[@属性=“属性值”] | 标签包裹的内容 | / text() | 属性 | @href | 模糊匹配 | //div[contain(@class,“a”)] | 下一个节点(兄弟关系)即取兄弟标签 | //head/following-sibling:: *[1] |
- xpath 返回数据类型为列表
- xpath下标从1开始,只能取平级关系的标签
2. 安装
#开始安装支持解析html和XML的解析库lxml
pip install lxml
3. 数据转换
转化为解析类型
from lxml import etree
import requests
url = "http://news.baidu.com"
headers = {"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"}
data = requests.get(url,headers = headers).content.decode("utf-8")
# 转化为解析类型
X_data = etree.HTML(data)
4. 调用xpath方法
# 直接从网页复制粘贴xpath
X_data.xpath('//*[@id="header"]/h1/text()')
# 根节点的方法
X_data.xpath('/html/head/title/text()')
# 跨节点的方法
X_data.xpath("//a/text()")
# 精确的标签
X_data.xpath('//a[@mon="r=1"]/text()')
# 获取属性
X_data.xpath('//a[@mon="r=1"]/@target')
# 模糊匹配
X_data.xpath('//a[contains(@mon,"r")]/text()')
# 取兄弟标签
X_data.xpath("//head/following-sibling::*[0]/text()")
|