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 表達式中的運算符:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章