xpath contains_Python神技能 | 六张表,搞定 Xpath 语法!
源 /?馬哥LIinux運(yùn)維? ? ? ??文 /?j_hao104
一、選取節(jié)點(diǎn)
常用的路勁表達(dá)式:
表達(dá)式 | 描述 | 實(shí)例 | |
nodename | 選取nodename節(jié)點(diǎn)的所有子節(jié)點(diǎn) | xpath('//div') | 選取了div節(jié)點(diǎn)的所有子節(jié)點(diǎn) |
/ | 從根節(jié)點(diǎn)選取 | xpath('/div') | 從根節(jié)點(diǎn)上選取div節(jié)點(diǎn) |
// | 選取所有的當(dāng)前節(jié)點(diǎn),不考慮他們的位置 | xpath('//div') | 選取所有的div節(jié)點(diǎn) |
. | 選取當(dāng)前節(jié)點(diǎn) | xpath('./div') | 選取當(dāng)前節(jié)點(diǎn)下的div節(jié)點(diǎn) |
.. | 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn) | xpath('..') | 回到上一個節(jié)點(diǎn) |
@ | 選取屬性 | xpath('//@calss') | 選取所有的class屬性 |
?二、謂語
謂語被嵌在方括號內(nèi),用來查找某個特定的節(jié)點(diǎn)或包含某個制定的值的節(jié)點(diǎn)
實(shí)例:
表達(dá)式 | 結(jié)果 |
xpath('/body/div[1]') | 選取body下的第一個div節(jié)點(diǎn) |
xpath('/body/div[last()]') | 選取body下最后一個div節(jié)點(diǎn) |
xpath('/body/div[last()-1]') | 選取body下倒數(shù)第二個div節(jié)點(diǎn) |
xpath('/body/div[positon()<3]') | 選取body下前兩個div節(jié)點(diǎn) |
xpath('/body/div[@class]') | 選取body下帶有class屬性的div節(jié)點(diǎn) |
xpath('/body/div[@]') | 選取body下class屬性為main的div節(jié)點(diǎn) |
xpath('/body/div[price>35.00]') | 選取body下price元素值大于35的div節(jié)點(diǎn) |
三、通配符
Xpath通過通配符來選取未知的XML元素
表達(dá)式 | 結(jié)果 |
xpath('/div/*') | 選取div下的所有子節(jié)點(diǎn) |
xpath('/div[@*]') | 選取所有帶屬性的div節(jié)點(diǎn) |
四、取多個路徑
使用“|”運(yùn)算符可以選取多個路徑?
表達(dá)式 | 結(jié)果 |
xpath('//div|//table') | 選取所有的div和table節(jié)點(diǎn) |
?五、Xpath軸
軸可以定義相對于當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)集
軸名稱 | 表達(dá)式 | 描述 |
ancestor | xpath('./ancestor::*') | 選取當(dāng)前節(jié)點(diǎn)的所有先輩節(jié)點(diǎn)(父、祖父) |
ancestor-or-self | xpath('./ancestor-or-self::*') | 選取當(dāng)前節(jié)點(diǎn)的所有先輩節(jié)點(diǎn)以及節(jié)點(diǎn)本身 |
attribute | xpath('./attribute::*') | 選取當(dāng)前節(jié)點(diǎn)的所有屬性 |
child | xpath('./child::*') | 返回當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn) |
descendant | xpath('./descendant::*') | 返回當(dāng)前節(jié)點(diǎn)的所有后代節(jié)點(diǎn)(子節(jié)點(diǎn)、孫節(jié)點(diǎn)) |
following | xpath('./following::*') | 選取文檔中當(dāng)前節(jié)點(diǎn)結(jié)束標(biāo)簽后的所有節(jié)點(diǎn) |
following-sibing | xpath('./following-sibling::*') | 選取當(dāng)前節(jié)點(diǎn)之后的兄弟節(jié)點(diǎn) |
parent | xpath('./parent::*') | 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn) |
preceding | xpath('./preceding::*') | 選取文檔中當(dāng)前節(jié)點(diǎn)開始標(biāo)簽前的所有節(jié)點(diǎn) |
preceding-sibling | xpath('./preceding-sibling::*') | 選取當(dāng)前節(jié)點(diǎn)之前的兄弟節(jié)點(diǎn) |
self | xpath('./self::*') | 選取當(dāng)前節(jié)點(diǎn) |
六、功能函數(shù)
使用功能函數(shù)能夠更好的進(jìn)行模糊搜索
函數(shù) | 用法 | 解釋 |
starts-with | xpath('//div[starts-with(@id,"ma")]') | 選取id值以ma開頭的div節(jié)點(diǎn) |
contains | xpath('//div[contains(@id,"ma")]') | 選取id值包含ma的div節(jié)點(diǎn) |
and | xpath('//div[contains(@id,"ma") and?contains(@id,"in")]') | 選取id值包含ma和in的div節(jié)點(diǎn) |
text() | xpath('//div[contains(text(),"ma")]') | 選取節(jié)點(diǎn)文本包含ma的div節(jié)點(diǎn) |
scrapy xpath文檔:http://doc.scrapy.org/en/0.14/topics/selectors.html?
-END-
轉(zhuǎn)載聲明:本文選自「馬哥LIinux運(yùn)維?」。
重磅推出全新學(xué)習(xí)模式
用打卡學(xué)Python
每天30分鐘
30天學(xué)會Python編程
世界正在獎勵堅(jiān)持學(xué)習(xí)的人!
總結(jié)
以上是生活随笔為你收集整理的xpath contains_Python神技能 | 六张表,搞定 Xpath 语法!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sketchup作品_18级园林工程技术
- 下一篇: 用python处理excel 数据分析_