我愿意決議https://2gis.kz,但我遇到了使用 .text 或任何用于從類中提取文本的方法時出錯的問題
我正在輸入搜索查詢,例如“健身”
我的視窗變數是
all_cards = driver.find_elements(By.CLASS_NAME,"_1hf7139")
for card_ in all_cards:
card_.click()
window = driver.find_element(By.CLASS_NAME, "_18lzknl")
這是我如何打開一個包含所有基本資訊的迷你視窗的一個非常簡化的版本。下面我附上了一段代碼,我試圖從電話號碼持有者中提取文本。
texts = window.find_elements(By.CLASS_NAME,'_b0ke8')
print(texts) # this prints out something from where I am concluding that this thing is accessible
try:
print(texts.text)
except:
print(".text")
try:
print(texts.text())
except:
print(".text()")
try:
print(texts.get_attribute("innerHTML"))
except:
print('getAttribute("innerHTML")')
try:
print(texts.get_attribute("textContent"))
except:
print('getAttribute("textContent")')
try:
print(texts.get_attribute("outerHTML"))
except:
print('getAttribute("outerHTML")')
嗨,伙計們,我解決了一個問題。.text 由于某種原因無法正常作業。我猜開發人員以某種方式設法保護資訊不使用這種方法。我用了一個
get_attribute("innerHTML") # afaik this allows us to get a html code of a particular class
現在它就像一個魅力。
texts = window.find_elements(By.TAG_NAME, "bdo")
with io.open("t.txt", "a", encoding="utf-8") as f:
for text in texts:
nums = re.sub("[^0-9]", "",
text.get_attribute("innerHTML"))
f.write(nums '\n')
f.close()
所以問題是:
- 我試圖通過使用 print(texts) 列印專案串列
- 即使當我嘗試在 for 回圈中列印 texts 變數的每個元素時,由于它是在 utf-8 中解碼的事實,我得到了一個錯誤。
我希望有人會發現它很有用,并且不會花費過多的時間來嘗試修復這樣一個簡單的錯誤。
uj5u.com熱心網友回復:
find_elements方法回傳一個 Web 元素串列。所以這
texts = window.find_elements(By.CLASS_NAME,'_b0ke8')
為您texts提供網路元素串列。
您不能將.text方法直接應用于list.
為了獲取每個元素文本,您必須遍歷串列中的元素并提取該元素文本,如下所示:
text_elements = window.find_elements(By.CLASS_NAME,'_b0ke8')
for element in text_elements:
print(element.text)
另外,我不確定您使用的定位器。
_1hf7139,_18lzknl并且_b0ke8類名似乎是動態類名,即它們可能會更改每個瀏覽會話。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/435273.html
上一篇:無法在Python中找到元素
