資料提取(一) Xpath 語法

2021-10-10 19:24:37 字數 3157 閱讀 2827

xpath(xml path language)是一門在xml、html文件中查詢資訊的語言,可用來在xml html文件中對元素和屬性進行遍歷

xpath helper 是xpath的開發工具,是一款 chrome 瀏覽器的開發者外掛程式/firefox外掛程式為try xpath,安裝了 xpath helper 後能輕鬆獲取 html元素的 xpath,程式設計師不再需要通過搜尋 html 源**,定位一些 id 去找到對應的位置去解析網頁了

xpath有七種型別的節點:

元素、屬性、文字、命名空間、處理指令、注釋以及文件(根)節點

xml 文件是被作為節點樹來對待的,樹的根被稱為文件節點或者根節點

<?xml version="1.0" encoding="utf-8"?>

>

>

lang

="en"

>

harry pottertitle

>

>

j k. rowlingauthor

>

>

2005year

>

>

29.99price

>

book

>

bookstore

>

(1)上面的xml文件中的節點例子:

>

(文件節點)

>

j k. rowlingauthor

>

(元素節點)

lang="en" (屬性節點)

(2)基本值的例子:j k. rowling"en"

基本值(或稱原子值,atomic value):基本值是無父或無子的節點。

(3)專案(item):專案是基本值或者節點。

(4)節點的關係:

父:每個元素以及屬性都有乙個父。

子:元素節點可有零個、乙個或多個子

同胞:擁有相同的父的節點

先輩:某節點的父、父的父,等等。

後代:某個節點的子,子的子,等等。

xpath 使用路徑表示式來選取 xml 文件中的節點或節點集

節點通過沿著路徑 (path) 或者步 (steps) 來選取

(1)選取結點路徑表示式

描述示例

結果nodename

選取此節點的所有子節點

bookstore

選取bookstore下所有的子節點

/如果是在最前面 代表從根節點開始選取 否則選擇某結點下的某個節點

(1)/bookstore(2)bookstore/book

(1)選取根結點下所有的bookstore結點(2)選取bookstore節點下所有的book結點 注釋:假如路徑起始於正斜槓( / ),則此路徑始終代表到某元素的絕對路徑!

//從全域性結點中中選擇節點,隨便在哪個位置

(1)//book (2)bookstore//book

(1)從全域性節點中找到所有的book結點,不管他們在哪個位置(2)選擇 bookstore結點後代中的所有 book結點,不管它們位於 bookstore 之下的什麼位置

@選取某個節點的屬性

(1)//book[@price](2)//@lang

(1)選取所有擁有price屬性的book結點(2)選取名為 lang 的所有屬性

.選取當前節點

..選取當前節點的父節點

(1)查詢book 

方法一:html/body/bookstore/book

注意head和body同級的,不是html/head/body/bookstore/book

方法二://book

結果得到兩個book

注意/獲取子節點 //獲取子孫節點

(2)查詢lang屬性

//book/title[@lang="eng"] 選取所有的title結點 且這些節點擁有屬性值為eng的lang屬性

結果得到 harry potter

//book/title[@lang] 選取所有的title結點 且這些節點擁有lang屬性

注意有時候屬性包含了多個值使用contains()函式,如

//title[contains(@lang,'eng')]

(3)上面例子中有兩個book,如果只查詢其中某乙個book 就要用到謂語

特別注意:第乙個下標是從 1 開始 不是從 0 開始

所謂謂語,是用來查詢某個特定的節點或者包含某個指定的值的節點,謂語被嵌在方括號中

/bookstore/book[price>35.00]

選取 bookstore 元素的所有 book 元素,且其中的 price 元素的值須大於 35.00。

/bookstore/book[price>35.00]/title

選取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值須大於 35.00。

(2)謂語/謂詞

(3)萬用字元 *

萬用字元描述示例結果*

匹配任意節點

/bookstore/*

選取bookstore下的所有子元素

@*匹配節點的任意屬性

//book[@*]

選取所有帶有屬性的book元素

(4)運算子

特別注意邏輯或是or

| 是計算兩個節點集 主要用來選取若干路徑 如

//bookstore/book | //book/title

選取所有book元素以及book元素下所有的title元素

資料提取之XPATH

2.資料提取 xpath語法和 lxml模組 xpath是一門在xml和html文件中查詢資訊的語言 原本設計適用於xml的,但xml和html兩者的語法極為相似,所以也可以使用html 谷歌瀏覽器下是xpath 火狐瀏覽器下是try xpath 360瀏覽器下也相容xpath,使用時需要開啟開發者...

Python網路爬蟲 資料提取xpath

xpath,即為xml路徑語言 xmlpathlanguage 它是一種用來確定xml文件中某部分位置的語言。xml和html異同 都是玩標籤,標籤中都有屬性 xml必須為雙標籤,html單雙都可 xml標籤為自定義,html標籤都為內建xpath 使用路徑表示式在 xml 文件中進行導航 xpat...

XPath學習 基本語法 一

xpath是一種路徑語言 xpath 是一門在 xml 文件中查詢資訊的語言。xpath 可用來在 xml 文件中對元素和屬性進行遍歷。xpath 是 w3c xslt 標準的主要元素,並且 xquery 和 xpointer 同時被構建於 xpath 表達之上。推薦乙個挺不錯的 裡面有很不錯的例子...