2017-09-11 222 views
1

我正在嘗試使用以下代碼(代碼段)從網頁中提取IP地址。使用Selenium從網頁中提取文本

IPs = driver.find_elements_by_xpath("//span[contains(text(), '10.')]") 
print(IPs) 

的HTML元素(一個或多個)是這樣的:

<span style="padding: 1px 4px;float:left;">10.20.20.20</span> 

檢查>>複製XPath返回:

//*[@id="T1700010887"]/tbody/tr[2]/td[1]/nobr/span 

但我所有的代碼打印是什麼樣子通用硒碼:

[<selenium.webdriver.remote.webelement.WebElement (session="7885f3a61de714f2cb33 
b23d03112ff2", element="0.5496921740104628-2")>, <selenium.webdriver.remote.webe 
lement.WebElement (session="7885f3a61de714f2cb33b23d03112ff2", element="0.549692 
1740104628-3")>, <selenium.webdriver.remote.webelement.WebElement (session="7885 
f3a61de714f2cb33b23d03112ff2", element="0.5496921740104628-4")>] 

我該怎麼辦讓它打印10.20.20.20的實際IP?

回答

2

當使用硒的元素找到方法,你檢索WebElement對象。您需要的是元素的文本,您可以通過WebElement對象的text屬性檢索該文本。此外,find_elements_by_xpath方法返回WebElements的列表,所以你需要遍歷它:

IPs = driver.find_elements_by_xpath("//span[contains(text(), '10.')]") 

for ip in IPs: 
    print(ip.text) 
+0

優秀的解釋和完美的作品。謝謝! –

2

您需要使用text()

IPs = driver.find_elements_by_xpath("//span[contains(text(), '10.')]/text()") 
3

find_elements_by_xpath返回硒對象的列表。您必須訪問每個對象的文本屬性。此代碼應該做你想要什麼:

IPs = driver.find_elements_by_xpath("//span[contains(text(), '10.')]") 
IPS = [elem.text for elem in IPs] 
print(IPs) 
相關問題