python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)

文章目录

  • 一、XML
    • 1. 什么是XML
    • 2.XML和HTML的区别
      • 1.语法要求不同
      • 2. 标记不同
      • 3. 作用不同
    • 3. XML的节点关系
      • (1)父节点(Parent)
      • (2)子节点(Children)
      • (3)同胞(Sibling)
      • (4)先辈(Ancestor)
      • (5)后代(Descendant)
  • 二、XPATH
    • 1. 什么是XPath
    • 2. XPATH语法内容
      • 1. 选取节点
      • 2. 谓语
      • 3. 选取未知节点
      • 4. 选取若干路径
      • 5. XPath的运算符

一、XML


1. 什么是XML


定义: XML 指可扩展标记语言(EXtensible Markup Language)

特点: XML 被设计为具有自我描述性,是一种半结构化数据

作用: XML 的设计宗旨是传输数据,而非显示数据。可以作为配置文件记录一些重要的配置信息

  • XML 的标签需要我们自行定义。

  • XML 是一种标记语言,很类似 HTML

  • XML 被设计为具有自我描述性,是一种半结构化数据

  • XML 是 W3C 的推荐标准

W3School官方文档:http://www.w3school.com.cn/xml/index.asp


2.XML和HTML的区别


他们两者都是用于操作数据或者结构数据,在结构上大致相同的,但他们在本质上却存在着明显的区别。


1.语法要求不同


总结:xml的语法要求更严格。


2. 标记不同


  • html使用固有的标记,xml没有固有标记

  • html标签是预定义的,xml标签是自定义的、可扩展的。


3. 作用不同



3. XML的节点关系


(1)父节点(Parent)


每个元素以及属性都有一个父节点。

下面是一个简单的XML例子中,book 元素是 title、author、year 以及 price 元素的父节点:
python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)_第2张图片


(2)子节点(Children)


元素节点可有零个、一个或多个子节点。

在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子节点:
python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)_第3张图片


(3)同胞(Sibling)


拥有相同的父节点。

在下面的例子中,title、author、year 以及 price 元素都是同胞:
python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)_第4张图片


(4)先辈(Ancestor)


某节点的父节点、父节点的父节点,等等。

在下面的例子中,title 元素的先辈是 book 元素和 bookstore 元素:
python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)_第5张图片


(5)后代(Descendant)


某个节点的子节点,子节点的子节点,等等。

在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:
python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)_第6张图片


二、XPATH


1. 什么是XPath


XPATH是一种语法,用来提取html或者XML页面内容的语法

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

W3School官方文档:http://www.w3school.com.cn/xpath/index.asp


2. XPATH语法内容


必备知识:

语法知识 含义
元素 指一个xml的标签以及标签的所有内容
属性 class,name
标签 和元素一样
内容 标签包括的文本内容 如a标签的内容就是aaaa(不包括b标签),b标签的内容就是bbbb; aaaabbbb

1. 选取节点


XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。

下面列出了最常用的路径表达式:

表达式 描述
nodename 选取此标签(节点)的所有子标签(节点)
/ 从根节点开始选取
// 从任意位置开始选取
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
text() 选取标签当中的值(内容)

实例:

python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)_第7张图片

详解
python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)_第8张图片


2. 谓语


英语中谓语用来限定

XPATH的谓语也是限定选取内容的

接上图

路径 表达式语义
/bookstore/book[1] 表示取bookstroe下面的第一个book标签
/bookstore/book[last()] 表示取bookstroe下面的最后一个book标签
/bookstore/book[last()-1] 表示取bookstroe下面倒数第二个book标签
/bookstore/book[position()>1] 跳过第一本书,选取第二本以及第二本以后的书
/bookstore/book[position()<2] 选取第一本书,第二本书以前的书

总结:谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中。


3. 选取未知节点


通配符 描述
@* 匹配任意属性的节点(匹配任何属性)
* 匹配任意元素的节点
node() 匹配任何类型的节点

在下面的表格中,列出了一些路径表达式,以及这些表达式的结果:
python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)_第9张图片


4. 选取若干路径


通过在路径表达式中使用“|”运算符,您可以选取若干个路径。在下面的表格中,列出了一些路径表达式,以及这些表达式的结果:
python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)_第10张图片


5. XPath的运算符


下面列出了可用在 XPath 表达式中的运算符
python 爬虫(六)XML的介绍(与HTML的区别 + 节点关系) + XPATH语法内容(选取节点 + 谓语 + 选取未知节点 + 选取若干路径 + XPath的运算符)_第11张图片
注意:这些就是XPath的语法内容,在运用到Python抓取时要先转换为xml。


你可能感兴趣的:(#,python,爬虫)