python中xpath用法_Python中的xpath基础使用
前言:
XPath 是一門在 XML 文檔中查找信息的語言。XPath 用于在 XML 文檔中通過元素和屬性進行導航。
XPath 含有超過 100 個內建的函數。這些函數用于字符串值、數值、日期和時間比較、節點和 QName 處理、序列處理、邏輯值等等。
XPath 是 W3C 標準,XPath 于 1999 年 11 月 16 日 成為 W3C 標準。XPath 被設計為供 XSLT、XPointer 以及其他 XML 解析軟件使用。
在XPath 中,有七種類型的節點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔節點(或稱為根節點)。
XML 文檔是被作為節點樹來對待的。樹的根被稱為文檔節點或者根節點。
一、選取節點
常用的路徑表達式:
表達式
描述
實例
nodename
選取nodename節點的所有子節點
xpath(‘//div’)
選取了div節點的所有子節點
/
從根節點選取
xpath(‘/div’)
從根節點上選取div節點
//
選取所有的當前節點,不考慮他們的位置
xpath(‘//div’)
選取所有的div節點
.
選取當前節點
xpath(‘./div’)
選取當前節點下的div節點
..
選取當前節點的父節點
xpath(‘..’)
回到上一個節點
@
選取屬性
xpath(’//@calss’)
選取所有的class屬性
二、謂詞:被嵌在方括號內,用來查找某個特定的節點或包含某個制定的值的節點
表達式
結果
xpath(‘/body/div[1]’)
選取body下的第一個div節點
xpath(‘/body/div[last()]’)
選取body下最后一個div節點
xpath(‘/body/div[last()-1]’)
選取body下倒數第二個div節點
xpath(‘/body/div[positon()<3]’)
選取body下前兩個div節點
xpath(‘/body/div[@class]’)
選取body下帶有class屬性的div節點
xpath(‘/body/div[@class=”main”]’)
選取body下class屬性為main的div節點
xpath(‘/body/div[price>35.00]’)
選取body下price元素值大于35的div節點
三、通配符:Xpath通過通配符來選取未知的XML元素
表達式
結果
xpath(’/div/*’)
選取div下的所有子節點
xpath(‘/div[@*]’)
選取所有帶屬性的div節點
四、取多個路徑:使用“ | 運算符可以選取多個路徑
表達式
結果
xpath(‘//div|//table’)
選取所有的div和table節點
五、Xpath軸:軸可以定義相對于當前節點的節點集
軸名稱
表達式
描述
ancestor
xpath(‘./ancestor::*’)
選取當前節點的所有先輩節點(父、祖父)
ancestor-or-self
xpath(‘./ancestor-or-self::*’)
選取當前節點的所有先輩節點以及節點本身
attribute
xpath(‘./attribute::*’)
選取當前節點的所有屬性
child
xpath(‘./child::*’)
返回當前節點的所有子節點
descendant
xpath(‘./descendant::*’)
返回當前節點的所有后代節點(子節點、孫節點)
following
xpath(‘./following::*’)
選取文檔中當前節點結束標簽后的所有節點
following-sibing
xpath(‘./following-sibing::*’)
選取當前節點之后的兄弟節點
parent
xpath(‘./parent::*’)
選取當前節點的父節點
preceding
xpath(‘./preceding::*’)
選取文檔中當前節點開始標簽前的所有節點
preceding-sibling
xpath(‘./preceding-sibling::*’)
選取當前節點之前的兄弟節點
self
xpath(‘./self::*’)
選取當前節點
六、功能函數:使用功能函數能夠更好的進行模糊搜索
函數
用法
解釋
starts-with
xpath(‘//div[starts-with(@id,”ma”)]‘)
選取id值以ma開頭的div節點
contains
xpath(‘//div[contains(@id,”ma”)]‘)
選取id值包含ma的div節點
and
xpath(‘//div[contains(@id,”ma”) and contains(@id,”in”)]‘)
選取id值包含ma和in的div節點
text()
xpath(‘//div[contains(text(),”ma”)]‘)
選取節點文本包含ma的div節點
七、常用函數:
1、精確定位
(1)contains(str1,str2)用來判斷str1是否包含str2
例1://*[contains(@class,'c-summaryc-row ')]選擇@class值中包含c-summary c-row的節點
例2://div[contains(.//text(),'價格')]選擇text()中包含價格的div節點
(2)position()選擇當前的第幾個節點
例1://*[@class='result'][position()=1]選擇@class='result'的第一個節點
例2://*[@class='result'][position()<=2]選擇@class='result'的前兩個節點
(3)last()選擇當前的倒數第幾個節點
例1://*[@class='result'][last()]選擇@class='result'的最后一個節點
例2://*[@class='result'][last()-1]選擇@class='result'的倒數第二個節點
(4)following-sibling 選取當前節點之后的所有同級節點
例1://div[@class='result']/following-sibling::div選擇@class='result'的div節點后所有同級div節點找到多個節點時可通過position確定第幾個如://div[@class='result']/following-sibling::div[position()=1]
(5)preceding-sibling 選取當前節點之前的所有同級節點
使用方法同following-sibling
2、過濾信息
(1)substring-before(str1,str2)用于返回字符串str1中位于第一個str2之前的部分
例子:substring-before(.//*[@class='c-more_link']/text(),'條')
返回.//*[@class='c-more_link']/text()中第一個'條'前面的部分,如果不存在'條',則返回空值
(2)substring-after(str1,str2)跟substring-before類似,返回字符串str1中位于第一個str2之后的部分
例1:substring-after(.//*[@class='c-more_link']/text(),'條')
返回.//*[@class='c-more_link']/text()中第一個’條’后面的部分,如果不存在'條',則返回空值
例2:substring-after(substring-before(.//*[@class='c-more_link']/text(),'新聞'),'條')
返回.//*[@class='c-more_link']/text()中第一個'新聞'前面與第一個'條'后面之間的部分
(3)normalize-space()
用來將一個字符串的頭部和尾部的空白字符刪除,如果字符串中間含有多個連續的空白字符,將用一個空格來代替
例子:normalize-space(.//*[contains(@class,'c-summaryc-row ')])
(4)translate(string,str1,str2)
假如string中的字符在str1中有出現,那么替換為str1對應str2的同一位置的字符,假如str2這個位置取不到字符則刪除string的該字符
例子:translate('12:30','03','54')結果:'12:45'
3、拼接信息
(1)concat()函數用于串連多個字符串
例子:concat('http://baidu.com',.//*[@class='c-more_link']/@href)
總結
以上是生活随笔為你收集整理的python中xpath用法_Python中的xpath基础使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 母亲耳朵聋遗传下一代吗?
- 下一篇: centos7 tomcat_cento