日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XPath初探笔记

發(fā)布時間:2023/12/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XPath初探笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

XPath初探筆記

  • 背景
  • XPath功能
    • 通配節(jié)點選擇
    • 條件選擇
    • 常用函數(shù)選擇
    • 多個XPath組合
    • 相對關(guān)系軸(節(jié)點集)
    • 數(shù)值運算
  • 參考

背景

原先基本沒咋接觸前端,最近在搞Scrapy的時候順手把XPath讀了讀,順便做了點筆記。
XPath使用了路徑表示法,就像在url中導(dǎo)航XML文檔的層次結(jié)構(gòu)一樣。
本身XPath也并不復(fù)雜,了解下面的部分放在Scrapy中已經(jīng)完全夠用了。

XPath功能

XPath標(biāo)記分為幾類基礎(chǔ)功能,依次簡單看看:

通配節(jié)點選擇

  • 絕對尋址

如果路徑始于/,就意味著將從根節(jié)點開始使用絕對路徑進(jìn)行尋址。

/AAA

/AAA/CCC

/AAA/DDD/BBB

  • 節(jié)點搜索

如果路徑以//開頭,則將選擇文檔中滿足條件的所有元素。

//BBB

//DDD/BBB

  • 全節(jié)點選擇

*選擇處理路徑下的所有元素

/AAA/CCC/DDD/*

條件選擇

  • 數(shù)組選擇

/AAA/BBB[1]

/AAA/BBB[last()]

  • 屬性選擇

@用以指定屬性

//@id

//BBB[@id]

//BBB[@*]

//BBB[not(@*)]

  • 屬性值選擇

可以指定屬性值進(jìn)行選擇。normailize-space可以將前導(dǎo)后導(dǎo)空格去除。

//BBB[@id=‘b1’]

//BBB[normalize-space(@name)=‘bbb’]
去除屬性值的前后導(dǎo)空格

常用函數(shù)選擇

  • 節(jié)點計數(shù)選擇

count()函數(shù)可以計算選中元素的子元素的數(shù)量

//*[count(BBB)=2]
選擇擁有2個BBB子元素的元素

//[count()=3]
選擇擁有3個子元素的元素

  • 元素名

name():返回元素名

//*[name()=‘BBB’]

  • 字符串操作

starts-with(A1,B1): 判定A1是否以B1為始

//*[starts-with(name(),‘B’)]

contains(A1,B1): 判定A1中是否包含B1

//*[contains(name(),‘C’)]

string-length():返回字符串長度

//*[string-length(name()) < 3]

多個XPath組合

可以由|組合多個XPath

/AAA/EEE | //BBB

/AAA/EEE | //DDD/CCC | /AAA | //BBB

相對關(guān)系軸(節(jié)點集)

  • 子軸child axis
  • 本節(jié)點
  • 默認(rèn)軸,通常可省略,名為子軸,應(yīng)該理解為self
  • 一個節(jié)點僅有一個本節(jié)點
  • /child::AAA = /AAA

    /child::AAA/child::BBB = /child::AAA/BBB = /AAA/child::BBB = /AAA/BBB

    • 后裔軸Descendant axis | Descendant-or-self axis
  • Descendant不含本節(jié)點
  • 包含本節(jié)點的遞歸的子孫節(jié)點
  • 一個節(jié)點可以有復(fù)數(shù)個子孫節(jié)點
  • *Descendant-or-self 在上述的基礎(chǔ)上增加本節(jié)點

    /descendant:😗

    根節(jié)點的所有后裔節(jié)點,即全節(jié)點

    /AAA/BBB/descendant:😗

    /AAA/BBB節(jié)點的所有后裔節(jié)點,不含節(jié)點/AAA/BBB

    //CCC/descendant::DDD

    選擇所有DDD節(jié)點,該DDD節(jié)點應(yīng)為某CCC節(jié)點的后裔

    /AAA/XXX/descendant-or-self:😗

    /AAA/XXX的節(jié)點及其所有后裔節(jié)點

    • 父軸Parent axis
  • 不包含本節(jié)點
  • 包含所選擇節(jié)點的父節(jié)點
  • 一個節(jié)點僅有一個或0個父節(jié)點
  • //DDD/parent:😗
    DDD節(jié)點的父節(jié)點

    • 祖先軸Ancestor axisAncestor | Ancestor-or-self axis
  • 不包含本節(jié)點
  • 祖先軸包含了所選擇節(jié)點的祖先,包含父節(jié)點即父節(jié)點的遞歸父節(jié)點
  • 一個節(jié)點可以有復(fù)數(shù)個祖先節(jié)點
  • 若選定節(jié)點非根節(jié)點,則根節(jié)點將包含在祖先軸的節(jié)點集中
  • *Ancestor-or-self 在上述的基礎(chǔ)上增加本節(jié)點,必定包含根節(jié)點

    //FFF/ancestor:😗
    所有FFF節(jié)點的祖先節(jié)點

    • 弟妹軸Following-sibling axis
  • 不包含本節(jié)點
  • 所有出現(xiàn)在選定節(jié)點后,且與選定節(jié)點同級(擁有相同的父節(jié)點)的節(jié)點
  • 一個節(jié)點可以有復(fù)數(shù)個弟妹節(jié)點
  • //CCC/following-sibling:😗

    選擇所有CCC節(jié)點的弟弟

    • 兄姐軸Preceding-sibling axis
  • 不包含本節(jié)點
  • 所有出現(xiàn)在選定節(jié)點前,且與選定節(jié)點同級(擁有相同的父節(jié)點)的節(jié)點
  • 一個節(jié)點可以有復(fù)數(shù)個兄姐節(jié)點
  • /AAA/XXX/preceding-sibling:😗

    選擇/AAA/XXX節(jié)點的哥哥

    • 后繼軸 Following axis
  • 不包含本節(jié)點
  • 所有文檔序出現(xiàn)在選定節(jié)點后的節(jié)點
  • 不包括本節(jié)點的后裔節(jié)點和祖先節(jié)點
  • 包括本節(jié)點的所有弟妹節(jié)點
  • 包括本節(jié)點祖先的所有弟妹節(jié)點
  • 一個節(jié)點可以有復(fù)數(shù)個后繼節(jié)點
  • //ZZZ/following:😗

    所有ZZZ節(jié)點的后繼節(jié)點

    -先導(dǎo)軸 Preceding axis

  • 不包含本節(jié)點
  • 所有文檔序出現(xiàn)在選定節(jié)點前的節(jié)點
  • 不包括本節(jié)點的后裔節(jié)點和祖先節(jié)點
  • 包括本節(jié)點的所有兄姐節(jié)點
  • 包括本節(jié)點祖先的所有兄姐節(jié)點
  • 一個節(jié)點可以有復(fù)數(shù)個先導(dǎo)節(jié)點
  • /AAA/XXX/preceding:😗

    所有/AAA/XXX節(jié)點的先導(dǎo)節(jié)點

    • 軸的正交性 Orthogonal axes

    ancestor, descendant, following, preceding and self(child)軸可以將XPath文檔劃分為正交的幾部分,他們相互不重疊,疊加后可構(gòu)成完整的文檔。

    //GGG/ancestor::* | //GGG/descendant::* | //GGG/following::* | //GGG/preceding::* | //GGG/self::* = //*

    數(shù)值運算

    除了加減外,支持以下操作符(其實應(yīng)該屬于一看就懂的):

    • div:執(zhí)行浮點除法
    • mod:操作符返回截斷除法的余數(shù)
    • floor:向下取整
    • ceiling:向上取整

    參考

  • http://www.zvon.org/comp/r/tut-XPath_1.html#Pages~List_of_XPaths
  • https://www.runoob.com/xpath/xpath-tutorial.html
  • 總結(jié)

    以上是生活随笔為你收集整理的XPath初探笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。