Xpath 选择器

Xpath介绍?

网页由三部分组成: HTML, CSS, JaveScript, HTML页面标签存在层级关系, 即DOM树,在获取数据目标时可以根据网页层次关系定位标签, 在获取文本属性, 每个标签就是一个Dom

另外 xpath 还有其他领域会用到,如:爬虫框架 Scrapy, 手机APP框架 Appium

什么时候用css,什么时候xpath?
当查找元素比较简单,用css没错,如果复杂,用xpath比较好

Xpath 安装

# 使用步骤
1。xpath安装:pip install lxml

2. 使用步骤:
# 导包
from lxml import etree
res = requests.get(url= url, headers=headers)
tree = etree.HTML(res.text) # 加载直接从网页上爬取来的数据
tree = etree.parse(html,etree.HTMLParser()) # 加载本地HTML 页面,html 是文件名字

tag_or_attr = tree.xpath('xpath表达式')

常用语法

1. nodename:   节点定位名(标签)
  .:         当前
2. .//:      从当前节点选取子孙节点
3. ./ :      从当前节点选取直接子节点
4. nodename[@attribute = '...']:    根据属性定位标签 '//div[@class=''ui-main]'
5. @attributename:    获取属性
6. text()    获取文本

7. /:     表式整个html根节点

属性匹配两种情况: 多属性匹配 & 单属性多值匹配

# 多属性匹配
示例: tree.xptah('//div[@class="item" and @name="text"]/text()')
<div class="item" name="test">div标签1</div>
<div ckass= "item">div2标签</div>
tree.xpath('//div[@class="item" and @name="test"]/text()' )
# 单属性匹配多值匹配
示例:tree.xpath('//div[contains(@class,"itrm")]/text()')

# 按顺序选择:
1.索引定位: 从1开始(牢记,牢记,牢记)
2. last()函数:last()-1代表倒数第二个
3. position()函数: 位置

原文地址:https://www.cnblogs.com/sunzzc/p/13182716.html