我有一個像這樣的html:
<div class='mesage-in'> cool text here </div>
<div class='mesage-in'> bad text here </div>
我的python代碼如下:
texto = navegador.find_element_by_class_name('message-in').text
print(texto)
它可能使這獲得具有相同類名的所有元素并放入陣列或定義為不同的變數?像這樣
輸出:
print(texto1)
-> cool text here
print(texto2)
-> bad text here
#or
print(texto[0])
-> cool text here
print(texto[1])
-> bad text here
實際上我的代碼只得到第一個
uj5u.com熱心網友回復:
您可以通過使用 BeautifulSoup 庫來實作這一點。
示例輸出:
['這里的文字很酷','這里的文字不好']
from bs4 import BeautifulSoup
def get_class_texts(html_text: str, class_name: str):
soup = BeautifulSoup(html_text, features="html.parser")
return [tag.text for tag in soup.select(f".{class_name}")]
print(get_class_texts("<div class='mesage-in'> cool text here </div> <div class ='mesage-in'> bad text here </div>", "mesage-in"))
uj5u.com熱心網友回復:
要將多個元素放入一個陣列中,您需要使用 find_elements。在你的情況下,我會像這樣使用 xpath:
eleArray = self.driver.find_elements(By.XPATH, '//div[@class='mesage-in']');
然后,您可以像這樣遍歷陣列:
for element in eleArray:
print(element.text)
這是一個類似的示例,我從維基百科獲取所有可拉丁語編碼的跨度元素并將它們記錄到控制臺。隨意運行看看結果(順便說一下這個產品是免費使用的,所以你可以通過google登錄轉移測驗用例,自己開戶): https ://mx1.maxtaf.com/cases/a320a3ad -9949-4bce-87fa-7a0980df8f1f?projectId=bugtestproject2
uj5u.com熱心網友回復:
您可以將它們存盤到串列中。該串列將是 Web 元素的串列。
如我所見,您正在使用navegador.find_elementwhich 將回傳單個 Web 元素。
而navegador.find_elements將回傳 Web 元素串列。
此外,最近 Seleniumfind_element_by_class_name已被棄用,因此我建議您使用navegador.find_element(By.CLASS_NAME, "")
代碼:
texto = navegador.find_elements(By.CLASS_NAME, 'message-in')
print(texto[0])
print(texto[1])
or
for txt in texto:
print(txt.text)
uj5u.com熱心網友回復:
根據 HTML:
<div class='mesage-in'> cool text here </div>
<div class='mesage-in'> bad text here </div>
下面一行代碼:
texto = navegador.find_element_by_class_name('message-in').text
將始終識別第一個匹配元素,提取文本并將其分配給texto. 因此,當您嘗試列印時texto,將列印第一個元素的文本,即此處的酷文本。
解決方案
您可以獲取具有相同類名的所有元素 iemesage-in并將其放在串列中,如下所示:
from selenium.webdriver.common.by import By
texto = navegador.find_elements(By.CLASS_NAME, 'message-in')
現在您可以根據索引列印所需的文本,如下所示:
在這里列印很酷的文字:
print(texto[0].text) # prints-> cool text here在此處列印錯誤文本:
print(texto[1].text) # prints-> bad text here
奧特羅
您還可以使用List Comprehension創建文本串列并按如下方式列印它們:
texto = [my_elem.text for my_elem in driver.find_elements(By.CLASS_NAME, "message-in")]
print(texto[0]) # prints-> cool text here
print(texto[1]) # prints-> bad text here
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/449458.html
標籤:Python html 硒 硒网络驱动程序 网络驱动程序
