欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

selenium XPath定位的實(shí)現(xiàn)示例

 更新時(shí)間:2024年10月18日 09:15:52   作者:itxck  
XPath是一種在XML文檔中定位和選擇節(jié)點(diǎn)的語(yǔ)言,通過(guò)路徑表達(dá)式遍歷XML樹(shù),支持節(jié)點(diǎn)選取、字符串匹配、數(shù)值計(jì)算、邏輯運(yùn)算等功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、XPATH概念

XPath是一種用于在 XML 文檔中定位和選擇節(jié)點(diǎn)的語(yǔ)言。它是一種在 XML 文檔中導(dǎo)航和查詢數(shù)據(jù)的標(biāo)準(zhǔn)方式,通常用于從 XML 文檔中提取特定信息或執(zhí)行數(shù)據(jù)操作。XPath 使用路徑表達(dá)式來(lái)遍歷 XML 樹(shù),并且支持多種功能,如節(jié)點(diǎn)選取、字符串匹配、數(shù)值計(jì)算、邏輯運(yùn)算等,可以幫助用戶準(zhǔn)確定位到文檔中所需的節(jié)點(diǎn)或內(nèi)容。XPath 的語(yǔ)法類似于文件系統(tǒng)路徑,通過(guò)使用斜杠(/)、雙斜杠(//)、方括號(hào)([])等符號(hào)來(lái)描述節(jié)點(diǎn)之間的層次關(guān)系和屬性條件,從而實(shí)現(xiàn)對(duì) XML 結(jié)構(gòu)的靈活查詢和篩選。XPath 在 XML 數(shù)據(jù)處理、Web 抓取、XSLT 轉(zhuǎn)換等領(lǐng)域廣泛應(yīng)用,為處理和操作 XML 數(shù)據(jù)提供了強(qiáng)大的工具和方法。

二、常用規(guī)則與方法

我們現(xiàn)用表格列舉一下幾個(gè)常用規(guī)則:

方法概念
/從當(dāng)前節(jié)點(diǎn)選取直接子節(jié)點(diǎn)
/ /從當(dāng)前節(jié)點(diǎn)選取子孫節(jié)點(diǎn)
.選取當(dāng)前節(jié)點(diǎn)
選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)

1.f12例子:

<div>
    <ul>
         <li class="item-0">
         	<a  rel="external nofollow" >第一項(xiàng)</a>
         </li>
         <li class="item-1">
         	<a  rel="external nofollow" >第二項(xiàng)</a>
         </li>
         <li class="item-inactive">
         	<a  rel="external nofollow" >第三項(xiàng)</a>
         </li>
         <li class="item-1">
         	<a  rel="external nofollow" >第四項(xiàng)</a>
         </li>
     </ul>
 </div>

2.節(jié)點(diǎn)獲取文本

獲取first item文本

  • 通過(guò)連續(xù)的 / 或 // 可以查找子節(jié)點(diǎn)或子孫節(jié)點(diǎn)
  • 我們選取了第一個(gè)li 節(jié)點(diǎn),中括號(hào)中傳入數(shù)字1即可,注意這里和代碼中不同,序號(hào)是以 1 開(kāi)頭的,不是 0 開(kāi)頭的。
  • 如果我們要選取最后一個(gè) li 節(jié)點(diǎn),中括號(hào)中傳入 last() 即可,返回的便是最后一個(gè) li 節(jié)點(diǎn)
  • 最后使用/text()或者在括號(hào)外面.text獲取節(jié)點(diǎn)內(nèi)部文本
dr.find_element(By.XPATH,'//div/ul/li[1]/a/text()')
dr.find_element(By.XPATH,'//div/ul/li[1]/a').text

3.屬性匹配

在選取的時(shí)候我們還可以用 @ 符號(hào)進(jìn)行屬性過(guò)濾,比如在這里如果我們要選取 class 為 item-0 的 li 節(jié)點(diǎn),可以這樣實(shí)現(xiàn):

dr.find_element(By.XPATH,'//li/a[@class="item-0"]')

在這里我們通過(guò)加入 [@class=“item-0”] 就限制了節(jié)點(diǎn)的 class 屬性為 item-0,文本中符合條件的 li 節(jié)點(diǎn)有一個(gè),所以返回結(jié)果應(yīng)該返回匹配到的元素,結(jié)果如下:

第一項(xiàng)

4. 屬性獲取

我們知道了用 text() 可以獲取節(jié)點(diǎn)內(nèi)部文本,那么節(jié)點(diǎn)屬性該怎樣獲取呢?其實(shí)還是用 @ 符號(hào)就可以,例如我們想獲取所有 li 節(jié)點(diǎn)下所有 a 節(jié)點(diǎn)的 href 屬性,代碼如下:

dr.find_element(By.XPATH,'//li/a/@href')

在這里我們通過(guò) @href 即可獲取節(jié)點(diǎn)的 href 屬性

我們還能使用selenium里dr.find_elements方法,用for循環(huán)取便歷所有的"//li/a",用.get_attribute(‘href’),將所有的href屬性全部獲取,代碼如下:

a=dr.find_elements(By.XPATH,'//li/a')
for href in a:
    print(href.get_attribute('href'))

5.iframe標(biāo)簽處理

當(dāng)有frame標(biāo)簽時(shí)需要使用他的id來(lái)進(jìn)行切換,要不然不能取到frame標(biāo)簽下的內(nèi)容

語(yǔ)法:

switch_to.frame(“frame_id”)

例子:

<body>
<iframe src = "a.html" id = "frame_id" name = "myframe">
</iframe>
</body>

如何定位到iframe呢:

  from selenium import webdriver
  
  driver = webdriver.Chrome()
  #用frame的index來(lái)定位,第一位時(shí)0
  driver.switch_to.frame(0)

三、同級(jí)節(jié)點(diǎn)元素定位

【同級(jí)元素】:

  • 向下尋找 following-sibling::
  • 向上尋找 preceding::

在這里插入圖片描述

通過(guò)li[2]QQ登錄使用following-sibling::找微博登錄:

dr.find_element(By.XPATH,'//div[@class='_3x8w3YCi']/ul/li[2]/following-sibling::li[1]')

在這里插入圖片描述

  • 通過(guò)li[2]QQ登錄使用preceding-sibling::找微信登錄:
dr.find_element(By.XPATH,'//div[@class='_3x8w3YCi']/ul/li[2]/preceding-sibling::li[1]')

在這里插入圖片描述

四、關(guān)鍵字定位

根據(jù)文本找位置

dr.find_element(By.XPATH,'//li/a[text()="第一項(xiàng)"]')

五、定位父級(jí)元素

【父級(jí)元素】

/parent::

如下面的xpath,定位ul下的li包含"處理"的文本,然后再定位該li的父級(jí)元素

完整代碼:

dr.find_element(By.XPATH,'ul/li/parpent::*')

到此這篇關(guān)于selenium XPath定位的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)selenium XPath定位內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 利用Python簡(jiǎn)單的可視化工具

    利用Python簡(jiǎn)單的可視化工具

    這篇文章講述了數(shù)據(jù)可視化的必要性,介紹了幾種常用的Python可視化庫(kù)(Matplotlib、Seaborn、Plotly、GeoPandas、Folium),并通過(guò)實(shí)例展示了如何使用這些庫(kù)進(jìn)行圖表繪制和分析
    2025-01-01
  • Django實(shí)現(xiàn)celery定時(shí)任務(wù)過(guò)程解析

    Django實(shí)現(xiàn)celery定時(shí)任務(wù)過(guò)程解析

    這篇文章主要介紹了Django實(shí)現(xiàn)celery定時(shí)任務(wù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python動(dòng)態(tài)加載變量示例分享

    python動(dòng)態(tài)加載變量示例分享

    這篇文章主要介紹了python動(dòng)態(tài)加載變量示例,需要的朋友可以參考下
    2014-02-02
  • 基于Python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生點(diǎn)名系統(tǒng)

    基于Python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生點(diǎn)名系統(tǒng)

    現(xiàn)在的學(xué)生大部分都很積極,會(huì)主動(dòng)舉手回答問(wèn)題。但是,也會(huì)遇到一些不好的情況,比如年級(jí)越高主動(dòng)舉手的人越少,所以本文做了一個(gè)隨機(jī)的學(xué)生點(diǎn)名系統(tǒng)可以幫老師解決這些問(wèn)題
    2022-09-09
  • python基礎(chǔ)while循環(huán)及if判斷的實(shí)例講解

    python基礎(chǔ)while循環(huán)及if判斷的實(shí)例講解

    下面小編就為大家?guī)?lái)一篇python基礎(chǔ)while循環(huán)及if判斷的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 在python的類中動(dòng)態(tài)添加屬性與生成對(duì)象

    在python的類中動(dòng)態(tài)添加屬性與生成對(duì)象

    這篇文章給大家介紹了如何在python的類中動(dòng)態(tài)添加屬性和生成對(duì)象,文中通過(guò)幾個(gè)方面來(lái)進(jìn)行介紹,對(duì)這感興趣的朋友們可以學(xué)習(xí)學(xué)習(xí)。
    2016-09-09
  • 解決python寫入帶有中文的字符到文件錯(cuò)誤的問(wèn)題

    解決python寫入帶有中文的字符到文件錯(cuò)誤的問(wèn)題

    今天小編就為大家分享一篇解決python寫入帶有中文的字符到文件錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Python.append()與Python.expand()用法詳解

    Python.append()與Python.expand()用法詳解

    今天小編就為大家分享一篇Python.append()與Python.expand()用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python matplotlib生成圖片背景透明的示例代碼

    Python matplotlib生成圖片背景透明的示例代碼

    這篇文章主要介紹了Python matplotlib生成圖片背景透明的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 在keras下實(shí)現(xiàn)多個(gè)模型的融合方式

    在keras下實(shí)現(xiàn)多個(gè)模型的融合方式

    這篇文章主要介紹了在keras下實(shí)現(xiàn)多個(gè)模型的融合方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05

最新評(píng)論