前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解析神器xpath使用教程

解析神器xpath使用教程

作者头像
Eternity
发布2022-08-24 20:01:04
1K0
发布2022-08-24 20:01:04
举报

介绍

XPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历

为什么要学习xpath和parsel

  • parsel是一款高性能的 Python HTML/XML 解析器。
  • 将字符串转化为Selector对象,Selector对象具有xpath的方法,返回结果的列表,能够接受bytes类型的数据和str类型的数据。
  • 我们可以利用XPath,来快速的定位特定元素以及获取节点信息

节点

每个html的标签我们都称之为节点。(根节点、子节点、同级节点)

节点的关系
节点的关系

xpath说明

XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。

xpath表达式

表达式

描述

nodename

选中该元素。

/

从根节点选取、或者是元素和元素间的过渡。

//

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。跨节点获取标签

.

选取当前节点。

..

选取当前节点的父节点。

@

选取属性。

text()

选取文本。

  • 选取未知节点

通配符

描述

*

匹配任何元素节点。

@*

匹配任何属性节点。

node()

匹配任何类型的节点。

/div/*

选取 div元素的所有子元素。

//*

选取文档中的所有元素。

//title[@*]

选取所有带有属性的 title 元素。

xpath的使用方法

要用到parsel模块

import parsel

使用xpath的前提是 具有xpath方法 –> Selector对象

提取到的数据返回一个列表

转换数据类型方法

代码语言:javascript
复制
data = parsel.Selector(html_str).extract()  # parsel能够把缺失的html标签补充完成
data = parsel.Selector(html_str)  # parsel能够把缺失的html标签补充完成

xpath表达式说明

代码语言:javascript
复制
<div> 
	<ul> 
		<li class="item-1">
			<a href="link1.html">第一个</a>
		</li> 
		 
		<li class="item-2">
			<a href="link2.html">第二个</a>
		</li> 
		 
		<li class="item-3">
			<a href="link3.html">第三个</a>
		</li> 
		 
		<li class="item-4">
			<a href="link4.html">第四个</a>
		</li> 
		 
		<li class="item-5">
			<a href="link5.html">第五个</a> 
		</li>
	</ul>
</div>
  1. 从根节点开始,获取所有 a 标签
代码语言:javascript
复制
result = data.xpath('/html/body/div/ul/li/a').extract()
print(result)
  1. 跨节点获取所有 a 标签
代码语言:javascript
复制
result = data.xpath('//a').extract()
print(result)
  1. 选取当前节点 使用场景:需要对选取的标签的下一级标签进行多次提取
代码语言:javascript
复制
result = data.xpath('//ul')
result2 = result.xpath('./li').extract()
result3 = result.xpath('./li/a').extract()
print(result3)
  1. 选取当前节点的父节点,获取父节点的class属性值
代码语言:javascript
复制
result = data.xpath('//a')
result4 = result.xpath('../@class').extract()
print(result4)
  1. 获取第三个 li 标签的节点(两种方法)
代码语言:javascript
复制
result = data.xpath('//li[3]').extract()
result = data.xpath('//li')[2].extract()
print(result)
  1. 通过定位属性的方法获取第四个 a 标签
代码语言:javascript
复制
result = data.xpath('//a[@href="link4.html"]').extract()
print(result)
  1. 用属性定位标签,获取第四个 a 标签包裹的文本内容
代码语言:javascript
复制
result = data.xpath('//a[@href="link4.html"]/text()').extract()

print(result)
  1. 获取第五个 a 标签的href属性值
代码语言:javascript
复制
result = data.xpath('//li[5]/a/@href').extract()
print(result)

可以将上面的代码复制到本地 print一下

或者直接使用谷歌浏览器插件 xpath helper

下载方式:

  1. 谷歌商店下载–> 下载地址
  2. 本地下载–> 下载地址

本地下载安装方法可以百度,很简单的–>传送门

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
    • 为什么要学习xpath和parsel
      • 节点
      • xpath说明
        • xpath表达式
        • xpath的使用方法
        • xpath表达式说明
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档