python——xpath

python——xpath

  • 1、xpath简介
  • 2. 安装
  • 3. 数据转换
  • 4. 调用xpath方法

1、xpath简介

  • xpath是语法不是解析库
  • xpath语法:
内容 语法
节点 /
跨节点 //
精确的标签 //a[@属性=“属性值”]
标签包裹的内容 / text()
属性 @href
模糊匹配 //div[contain(@class,“a”)]
下一个节点(兄弟关系)即取兄弟标签 //head/following-sibling:: *[1]
  • 注意事项:
  1. xpath 返回数据类型为列表
  2. 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()")

你可能感兴趣的:(python常用库,python,xpath)