XML介绍及xpath文档

我们在抓取网页数据的时候,正则表达式可以说是一个万能的工具。但是正则表达式的难度系数比较高。不能说每个人都能精通熟练使用它,这样我们可以使用xpath。
(1)先将 HTML 文件 转换成 XML 文档;
(2)然后用 XPath语法查找 HTML 节点或元素

一 、 什么是 XML
  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 的标签需要我们自行定义。
  • XML 被设计为具有自我描述性。
  • XML 是 W3C 的推荐标准
  • W3School 官方文档

XML 和 HTML 的区别:
在这里插入图片描述

XML 官方事例:

<?xml version="1.0" encoding="utf-8"?>
<bookstore>
	<book category="cooking">
		<title lang="en">Everyday Italian</title>
		<author>Giada De Laurentiis</author>
		<year>2005</year>
		<price>30.00</price>
	</book>
	
	<book category="children">
		<title lang="en">Harry Potter</title>
		<author>J K. Rowling</author>
		<year>2005</year>
		<price>29.99</price>
	</book>
	
	<book category="web">
		<title lang="en">XQuery Kick Start</title>
		<author>James McGovern</author>
		<author>Per Bothner</author>
		<author>Kurt Cagle</author>
		<author>James Linn</author>
		<author>Vaidyanathan Nagarajan</author>
		<year>2003</year>
		<price>49.99</price>
	</book>
	
	<book category="web" cover="paperback">
		<title lang="en">Learning XML</title>
		<author>Erik T. Ray</author>
		<year>2003</year>
		<price>39.95</price>
	</book>
</bookstore>
二、HTML DOM 模型示例

HTML DOM 定义了访问和操作 HTML 文档的标准方法,以树结构方式表达 HTML
文档。
在这里插入图片描述

XML 的节点关系

1. 父(Parent )
每个元素以及属性都有一个父。
下面是一个简单 XML 例子中,book 元素是 title、author、year 以及 price 元素的父:
在这里插入图片描述
2. 子(Children )
元素节点可有零个、一个或多个子。
在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:
在这里插入图片描述
3. 同胞(Sibling )
拥有相同的父的节点
在下面的例子中,title、author、year 以及 price 元素都是同胞:
在这里插入图片描述
4. 先辈(Ancestor)
某节点的父、父的父,等等。
在下面的例子中,title 元素的先辈是 book 元素和 bookstore 元素:
在这里插入图片描述
5. 后代(Descendant )
某个节点的子,子的子,等等。
在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:
在这里插入图片描述

三、什么是 XPath?

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

1. 选取节点
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我
们在常规的电脑文件系统中看到的表达式非常相似。
下面列出了最常用的路径表达式:
在这里插入图片描述
text() 取标签当中的值
在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:
在这里插入图片描述
2. 谓语(Predicates )
谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中。
在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
在这里插入图片描述
position定位还可以这样使用:
定位到第13-17个li标签元素

city_list_ul = tree.xpath('//div[@class="letter_city"]//li[position()<18][position()>12]')

定位到li标签下子标签a的文本信息为“租 房”的a标签的url

house_list = tree.xpath('//li[@class="li_single li_itemsnew li_unselected"][a="租 房"]/a/@href')

获取某标签下所有的text文本信息,包括子标签的

tree.xpath('//div//text()')

3. 选取未知节点
XPath 通配符可用来选取未知的 XML 元素。
在这里插入图片描述
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
在这里插入图片描述

4. 选取若干路径
通过在路径表达式中使用“|”运算符,您可以选取若干个路径。
实例:在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
在这里插入图片描述
5.XPath 的运算符
下面列出了可用在 XPath 表达式中的运算符:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值