91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python定位xpath 節點位置的方法

發布時間:2020-10-18 08:42:37 來源:腳本之家 閱讀:158 作者:丿灬安之若死 欄目:開發技術

chrome 右鍵有copy xpath地址

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

可以自己用代碼驗證一下

如果還是不行 可以考慮從源碼當中取出來

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

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

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Storm</title>
</head>
<body>
 <h2 id="h2" name="hname" class="cname">這是一個h2標簽</h2>
 <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、節點

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

2、選取節點實驗

(1)/,從根節點選取

下面的代碼從根節點開始選取所有的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()

運行結果

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


Process finished with exit code 0

(2)//,從目標節點下選取

下面的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()

運行結果:

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


Process finished with exit code 0

如果我換成下面的xpath,結果會如何呢?

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()

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

(3). ,選取當前節點;.. ,選取父節點

下面的xpath,第一個,匹配到head元素,然后分配找head當前節點(就是head);head父節點(是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()

運行結果:

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()

運行結果為:

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'))

運行結果:first_name

(2)[last()]

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

運行結果:last_name

(3)[last()-1]

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

運行結果:first_name

(4)[position()<3]

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

運行結果:

first_name
last_name

(5)h2[@class]

在body元素下層找具有class屬性的h2標簽

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

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

在body元素下層找具有class屬性的h2標簽,且值為cname

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

(7)input[xxx>35]

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

4、選取未知節點——通過通配符實現

(1)//form[1]/*

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

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

運行結果:

first_name
None
last_name

(2)//*

選擇所有元素

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

運行結果:

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

(3)//input[@*]

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

以上這篇python定位xpath 節點位置的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丽水市| 乌拉特后旗| 汾阳市| 乌鲁木齐县| 大竹县| 南雄市| 象山县| 社旗县| 清河县| 黄陵县| 枣庄市| 孙吴县| 仪陇县| 平山县| 平邑县| 威远县| 宜宾县| 亚东县| 宁陕县| 白银市| 达拉特旗| 东港市| 大悟县| 商城县| 东阳市| 淄博市| 双辽市| 达日县| 雅江县| 仪征市| 满城县| 柘城县| 东光县| 娄底市| 乌兰察布市| 客服| 桑植县| 石家庄市| 陆河县| 拜城县| 方正县|