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

python定位xpath 節(jié)點位置的方法

 更新時間:2019年08月27日 16:32:38   作者:丿灬安之若死  
今天小編就為大家分享一篇python定位xpath 節(jié)點位置的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

chrome 右鍵有copy xpath地址

但是有些時候獲取的可能不對

可以自己用代碼驗證一下

如果還是不行 可以考慮從源碼當(dāng)中取出來

趁熱打鐵,使用前一篇文章中 XPath 節(jié)點來定位HTML 頁面。

HTML文件如下(您可以將其拷貝,保存成html文件,跟我筆者實驗):

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Storm</title>
</head>
<body>
 <h1 id="h1" name="hname" class="cname">這是一個h1標(biāo)簽</h1>
 <form>
  文本域1:<input type="text" name="first_name">
  <br>
  文本域2:<input type="text" name="last_name">
 </form>
 <form>
  密碼字段:<input type="password" name="password">
 </form>
 <form>
  單選按鈕1:
  <input type="radio" name="radio1" value="nan">male
  <input type="radio" name="radio1" value="nv">female
 </form>
 <form>
  寵物:
  <input type="checkbox" name="cw">貓
  <input type="checkbox" name="cw">狗
  <input type="checkbox" name="cw">兔子
 </form>
</body>
</html>

1、節(jié)點

上面的HTML文件,<html> 為根節(jié)點,他有個lang的屬性,他有兩個子節(jié)點<head>和<body>。

2、選取節(jié)點實驗

(1)/,從根節(jié)點選取

下面的代碼從根節(jié)點開始選取所有的html元素(這里只有一個),打印tag name,就是html

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(r'file:///E:\python\test1\day1\test0.html')
eles = driver.find_elements_by_xpath('/html')
for ele in eles:
 print(ele.tag_name)
driver.quit()

運行結(jié)果

C:\Python36\python.exe E:/python/test1/day1/test9.py
html


Process finished with exit code 0

(2)//,從目標(biāo)節(jié)點下選取

下面的xpath,意思就是我要去找head,找到就保存到eles里面,不一定需要在根目錄下面找

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(r'file:///E:\python\test1\day1\test0.html')
eles = driver.find_elements_by_xpath('//head')
for ele in eles:
 print(ele.tag_name)
driver.quit()

運行結(jié)果:

C:\Python36\python.exe E:/python/test1/day1/test9.py
head


Process finished with exit code 0

如果我換成下面的xpath,結(jié)果會如何呢?

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(r'file:///E:\python\test1\day1\test0.html')
eles = driver.find_elements_by_xpath('/head')
for ele in eles:
 print(ele.tag_name)
driver.quit()

從根節(jié)點選取head元素,跟節(jié)點不是head元素,所以找不到,打印為空

(3). ,選取當(dāng)前節(jié)點;.. ,選取父節(jié)點

下面的xpath,第一個,匹配到head元素,然后分配找head當(dāng)前節(jié)點(就是head);head父節(jié)點(是html)

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(r'file:///E:\python\test1\day1\test0.html')
eles2 = driver.find_elements_by_xpath('//head/.')
eles3 = driver.find_elements_by_xpath('//head/..')

for ele in eles2:
 print(ele.tag_name)

for ele in eles3:
 print(ele.tag_name)
driver.quit()

運行結(jié)果:

C:\Python36\python.exe E:/python/test1/day1/test9.py
head
html


Process finished with exit code 0

(4)@ 選取屬性

下面xpath為,匹配任意元素,其有個屬性charset,值為UTF-8。

from selenium import webdriver
 

 

driver = webdriver.Chrome()
driver.get(r'file:///E:\python\test1\day1\test0.html')
eles3 = driver.find_elements_by_xpath('//*[@charset="UTF-8"]')
for ele in eles3:
 print(ele.tag_name)
driver.quit()

運行結(jié)果為:

C:\Python36\python.exe E:/python/test1/day1/test9.py
meta


Process finished with exit code 0

3、謂語實驗

(1)[1]

選擇第一個form元素下面的第一個input元素,打印name屬性值

eles1 = driver.find_elements_by_xpath('//form[1]/input[1]')
for ele in eles1:
 print(ele.get_attribute('name'))

運行結(jié)果:first_name

(2)[last()]

eles1 = driver.find_elements_by_xpath('//form[1]/input[last()]')

運行結(jié)果:last_name

(3)[last()-1]

eles1 = driver.find_elements_by_xpath('//form[1]/input[last()-1]')

運行結(jié)果:first_name

(4)[position()<3]

eles1 = driver.find_elements_by_xpath('//form[1]/input[position()<3]')

運行結(jié)果:

first_name
last_name

(5)h1[@class]

在body元素下層找具有class屬性的h1標(biāo)簽

eles1 = driver.find_elements_by_xpath('//body/h1[@class]')
for ele in eles1:
 print(ele.tag_name)

(6)h1[@class="cname"]

在body元素下層找具有class屬性的h1標(biāo)簽,且值為cname

eles1 = driver.find_elements_by_xpath('//body/h1[@class="cname"]')

(7)input[xxx>35]

這個沒找到合適的例子,暫缺

4、選取未知節(jié)點——通過通配符實現(xiàn)

(1)//form[1]/*

選擇form[1]下的所有元素

eles1 = driver.find_elements_by_xpath('//form[1]/*')
for ele in eles1:
 print(ele.get_attribute('name'))

運行結(jié)果:

first_name
None
last_name

(2)//*

選擇所有元素

eles1 = driver.find_elements_by_xpath('//*')
for ele in eles1:
 print(ele.tag_name)

運行結(jié)果:

html
head
meta
title
body
h1
form
input
br
input
form
input
form
input
input
form
input
input
input
input

(3)//input[@*]

匹配只要有任意屬性的input元素

以上這篇python定位xpath 節(jié)點位置的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python對比校驗神器deepdiff庫使用詳解

    Python對比校驗神器deepdiff庫使用詳解

    deepdiff模塊常用來校驗兩個對象是否一致,包含3個常用類,DeepDiff,DeepSearch和DeepHash,其中DeepDiff最常用,可以對字典,可迭代對象,字符串等進行對比,使用遞歸地查找所有差異,本文給大家講解Python對比校驗神器deepdiff庫,感興趣的朋友一起看看吧
    2023-04-04
  • 一文詳解Python中Reduce函數(shù)輕松解決復(fù)雜數(shù)據(jù)聚合

    一文詳解Python中Reduce函數(shù)輕松解決復(fù)雜數(shù)據(jù)聚合

    這篇文章主要為大家介紹了Python中Reduce函數(shù)輕松解決復(fù)雜數(shù)據(jù)聚合示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • django orm模糊查詢、正則匹配多個值方式

    django orm模糊查詢、正則匹配多個值方式

    這篇文章主要介紹了django orm模糊查詢、正則匹配多個值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python3連接MySQL(pymysql)模擬轉(zhuǎn)賬實現(xiàn)代碼

    Python3連接MySQL(pymysql)模擬轉(zhuǎn)賬實現(xiàn)代碼

    這篇文章主要介紹了Python3連接MySQL(pymysql)模擬轉(zhuǎn)賬實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • python3之讀取redis數(shù)據(jù)帶有‘b’的問題

    python3之讀取redis數(shù)據(jù)帶有‘b’的問題

    這篇文章主要介紹了python3之讀取redis數(shù)據(jù)帶有‘b’的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python實現(xiàn)關(guān)鍵詞提取的示例講解

    python實現(xiàn)關(guān)鍵詞提取的示例講解

    下面小編就為大家分享一篇python實現(xiàn)關(guān)鍵詞提取的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python實現(xiàn)學(xué)生管理系統(tǒng)的示例代碼

    Python實現(xiàn)學(xué)生管理系統(tǒng)的示例代碼

    學(xué)生管理系統(tǒng)是一個常見的應(yīng)用程序,它可以幫助學(xué)校、教育機構(gòu)或教師管理學(xué)生的信息,本文將介紹如何利用Python開發(fā)一個學(xué)生管理系統(tǒng),需要的可以參考一下
    2023-07-07
  • 用Python編程實現(xiàn)語音控制電腦

    用Python編程實現(xiàn)語音控制電腦

    是否經(jīng)常好萊塢電影里看強大的語音識別系統(tǒng)? 是否每每看到都會羨慕嫉妒恨? 可是我們真心買不起啊。
    2014-04-04
  • python判斷是否漢字的5種方法實例

    python判斷是否漢字的5種方法實例

    這篇文章主要給大家介紹了關(guān)于python判斷是否漢字的5種方法,文中通過實例代碼將判斷的幾種方法介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-06-06
  • python發(fā)送HTTP請求的方法小結(jié)

    python發(fā)送HTTP請求的方法小結(jié)

    這篇文章主要介紹了python發(fā)送HTTP請求的方法,實例總結(jié)了GET、HEAD與POST方式發(fā)送http請求的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07

最新評論