一、XML的介绍

使用正则来提取网页中的数据虽然效率很快,但是使用起来 比较复杂,在此就有另一种进行网页数据提取的方法就是使用xpath来进行。

  • (1)先将 HTML文件 转换成 XML文档;
  • (2)然后用 XPath 查找 HTML 节点或元素。

1、什么是XML

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

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

XML 的设计宗旨是传输数据,而非显示数据

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

XML 被设计为具有自我描述性。

XML 是 W3C 的推荐标准

W3School官方文档:http://www.w3school.com.cn/xml/index.asp XML 和 HTML 的区别:

python xpath获取div文本_爬虫

2、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>

3、HTML DOM 模型示例

HTML DOM 定义了访问和操作 HTML 文档的标准方法,以树结构方式表达 HTML 文档。

python xpath获取div文本_python xpath获取div文本_02

XML的节点关系

1. 父(Parent)

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

下面是一个简单XML例子中,book 元素是 title、author、year 以及 price 元素的父:

python xpath获取div文本_xpath_03


2. 子(Children)

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

在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:

python xpath获取div文本_xpath_04


3. 同胞(Sibling)

拥有相同的父的节点

在下面的例子中,title、author、year 以及 price 元素都是同胞:

python xpath获取div文本_XML_05


4. 先辈(Ancestor)

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

在下面的例子中,title 元素的先辈是 book 元素和 bookstore 元素:

python xpath获取div文本_路径表达式_06


5. 后代(Descendant)

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

在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:

python xpath获取div文本_python xpath获取div文本_07

二、Xpath文档

1、什么是XPath?

XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。
W3School官方文档:http://www.w3school.com.cn/xpath/index.asp

2、XPath 开发工具

开源的XPath表达式编辑工具:XMLQuire(XML格式文件可用)
Chrome插件 XPath Helper
Firefox插件 XPath Checker

3、XML 实例文档

我们将在下面的例子中使用这个 XML 文档。

<?xml version="1.0" encoding="ISO-8859-1"?>
<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>

3.1 选取节点

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

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

python xpath获取div文本_爬虫_08


text() 取标签当中的值

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

python xpath获取div文本_路径表达式_09


3.2 谓语(Predicates)

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

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

python xpath获取div文本_xpath_10


3.3 选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

python xpath获取div文本_XML_11


在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

python xpath获取div文本_python xpath获取div文本_12


3.4 选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

实例:在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

python xpath获取div文本_路径表达式_13


3.5 XPath的运算符

下面列出了可用在 XPath 表达式中的运算符:

python xpath获取div文本_XML_14


这些就是XPath的语法内容,在运用到Python抓取时要先转换为xml。