Xpath做数据解析
xpath是一个路径表达式,
(1)xpath节点
在XPath中,有七种类型的节点:元素,属性,文本,命名空间,处理指令,注释以及文档节点;XML文档是被作为节点树来对待的。树的根被称为文档节点或者根结点
(2)xpath语法
xpath使用路径表达式来选取XML文档中的节点或节点集。节点是通过沿着路径(path)或者步(steps)来获取的。
//表示从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。例如:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>
其中,选取节点方式为:
| 表达式 | 描述 | 
|---|---|
bookstore | 
表示选取bookstore元素的所有子节点; | 
/bookstore | 
表示选取根元素bookstore; | 
bookstore/book | 
表示选取bookstore的子元素的所有book元素; | 
//book | 
表示选取所有book子元素,而不管它们在文档中的位置; | 
bookstore//book | 
表示选取bookstore元素的后代的所有book元素,而不管它们位于bookstore之下的什么位置; | 
//@lang | 
表示选取名为lang的所有元素。 | 
选择谓语方式为:
谓语用来查找某个特定的节点或者包含某个指定的值的节点;谓语被嵌套在方括号中;
| 路径表达式 | 结果 | 
|---|---|
/bookstore/book[1] | 
表示选取属于bookstore子元素的第一个book元素; | 
/bookstore/book[last()] | 
表示选取属于bookstore子元素的最后一个book元素; | 
/bookstore/book[-1] | 
表示选取bookstore子元素的倒数第二个book元素; | 
bookstore/book[position()<3] | 
选取最前面的两个属于bookstore元素的子元素的book元素; | 
//title[@lang] | 
表示选取所有拥有名为lang的属性的title元素; | 
//title[@lang='eng'] | 
表示选取所有拥有属性lang的值为eng的title元素; | 
bookstore/bookprice>35.00] | 
表示选取bookstore元素的所有book元素,且其中的price元素的值须大于35.00; | 
/bookstore/book[price>35.00]/title | 
表示选取bookstore元素中的book元素的所有title元素,且其中的price元素的值须大于35.00。 | 
选取未知节点:(通配符)
XPath通配符可用来选取位置的XML元素;
| 通配符 | 描述 | 
|---|---|
* | 
匹配任何元素节点; | 
@* | 
匹配任何属性节点; | 
node() | 
匹配任何类型的节点; | 
对应的路径表达式可以为:
| 路径表达式 | 结果 | 
|---|---|
/bookstore/* | 
选取文档中的所有元素; | 
//* | 
表示文档中的所有元素。 | 
//title[@*] | 
选取所有带有属性的title元素。 | 
选取若干路径:
通过在路径表达式中使用“|”运算符,您可以选取若干个路径。
|//book/title | //book/price     |表示book元素的所有title和price元素;|
|//title | //price                       |表示文档中的所有title和price元素;|
|bookstore/book/title | //price|表示选取属于bookstore元素的book元素的所有title元素,以及文档中所有的price元素;|
因此://dd[@data-index = '0']表示选取所有dd子元素,且其属性data-index的值为0;
//div[@class='option-list']表示选取所有div子元素,且其属性class的值为option-list;
/a/text()表示选取属于a元素节点中的所有文本;其中text()表示匹配任何文本类型的节点;
故//dd[@data-index = '0']//div[@class='option-list']/a/text()表示选取所有属性data-index值为0的dd元素下的所有属性class值为option-list的div元素下的a元素的所有文本;
而//dd[@data-index = '0']//div[@class='option-list']/a/@href表示选取所有属性data-index值为0的dd元素下的所有属性class值为option-list的div元素下的a元素的所有属性为href的数据;
Xpath做数据解析的更多相关文章
- 070.Python聚焦爬虫数据解析
		
一 聚焦爬虫数据解析 1.1 基本介绍 聚焦爬虫的编码流程 指定url 基于requests模块发起请求 获取响应对象中的数据 数据解析 进行持久化存储 如何实现数据解析 三种数据解析方式 正则表达式 ...
 - python爬虫数据解析的四种不同选择器Xpath,Beautiful Soup,pyquery,re
		
这里主要是做一个关于数据爬取以后的数据解析功能的整合,方便查阅,以防混淆 主要讲到的技术有Xpath,BeautifulSoup,PyQuery,re(正则) 首先举出两个作示例的代码,方便后面举例 ...
 - python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)
		
一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...
 - Python网络爬虫之三种数据解析方式 (xpath, 正则, bs4)
		
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
 - 爬虫-数据解析-xpath
		
xpath 解析 模块安装 : pip install lxml xpath的解析原理 实例化一个etree类型的对象,且将页面源码数据加载到该对象中 需要调用该对象的xpath方法结合着不同形式的x ...
 - 数据解析(XML和JSON数据结构)
		
一 解析 二 XML数据结构 三 JSON 数据结构 一 解析 1 定义: 从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...
 - iOS - XML 数据解析
		
前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...
 - iOS开发——网络Swift篇&JSON与XML数据解析
		
JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit) 一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...
 - 玩转iOS开发 - JSON 和 Xml 数据解析
		
前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...
 
随机推荐
- golang解析json配置文件
			
安装 go get github.com/akkuman/parseConfig 使用说明 环境假设 . ├── config.go ├── config.json config.json内容 { & ...
 - 160CrackMe练手 002
			
首先查壳无壳,输入伪码报错,根据报错od查找字符串,定位到错误代码附近,可以看到有个条件跳转,改掉就可以爆破,接下来分析下注册算法,我们周围看看,从最近几个call看,并没有我们输入的用户名在堆栈中出 ...
 - BZOJ4893: 项链分赃 && BZOJ4895: 项链分赃(增强版)
			
Solution 神仙题.jpg 切一刀简单啊,维护一个前缀和. 切两刀简单啊,拿个队列维护中间那一段. 切三刀,这tm什么毒瘤题. 于是打开题解:"保证不会答案不会超过宝石种类" ...
 - 【ASP.NET】System.Web.Routing - Route Class
			
Provides properties and methods for defining a route and for obtaining information about the route. ...
 - Javascript 高级程序设计(第3版) - 第02章
			
2017-05-10 更新原文: http://www.cnblogs.com/daysme 在 html 中使用 js 把js代码写在 <script type="text/java ...
 - 1st,Python基础——01
			
1 Python介绍 2 Python发展史 3 Python2 or 3? 4 Python安装 就不写了,各路大牛的博客都很详细. 5 Hello World程序 #!/usr/bin/env p ...
 - 项目Alpha冲刺--1/10
			
项目Alpha冲刺--1/10 1.团队信息 团队名称:基于云的胜利冲锋队 成员信息 队员学号 队员姓名 个人博客地址 备注 221500201 孙文慈 https://www.cnblogs.com ...
 - Windows下及Mac下的IntelliJ IDEA快捷键
			
Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Control ↩ == Return/Enter ⌫ == De ...
 - VUE 数据更新 视图没有更新
			
3.还有个小技巧 当数据已经更新了 但是视图没有更新的时候 比如 这里 视图并没有更新 说明aa这个方法中没有触发视图更新 只要这里面随便一个对象能触发更新 则所有的视图更新都会生效 在data中 ...
 - ts问题处理(2): 'Promise' only refers to a type, but is being used as a value here.
			
error TS2585: 'Promise' only refers to a type, but is being used as a value here. Do you need to cha ...