我正在嘗試使用 python 和 selenium webdriver 抓取谷歌搜索結果,但無法弄清楚為什么函式find_elements只回傳類中的一個元素(類中有多個 h3 元素,每個元素都包含不同的標題)。
for element in driver.find_elements(by=By.XPATH, value='//*[@]'):
title = element.find_element(by=By.XPATH, value='//h3').text
print(title)
鏈接到網頁檢查
該函式不回傳任何錯誤,只回傳第一個結果的標題。
謝謝。
uj5u.com熱心網友回復:
要在另一個元素中搜索元素,您應該使用以點開頭的 XPath,.否則 Selenium 將回傳 DOM 中與傳遞的定位器匹配的第一個元素,//h3在這種情況下。
因此,您的代碼可以如下所示:
for element in driver.find_elements(by=By.XPATH, value='//*[@]'):
title = element.find_element(by=By.XPATH, value='.//h3').text
print(title)
UPD
那里只有一個元素匹配//*[@class='v7W49e']XPath 定位器,因此driver.find_elements(by=By.XPATH, value='//*[@]')總是會回傳一個 Web 元素。
你應該//*[@class='v7W49e']//h3在那里使用。
這段代碼會作業得更好。
它仍然不夠好,因為并非所有匹配//*[@class='v7W49e']//h3XPath 定位器的元素都會有文本顯示給您,但這會給您提供多個結果。
for element in driver.find_elements(by=By.XPATH, value='//*[@]//h3'):
title = element.text
print(title)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/454393.html
標籤:python-3.x 硒 硒网络驱动程序
上一篇:如何在python中使用selenium選擇以下元素
下一篇:OSError:[Errno8]Execformaterror:'/home/ec2-user/Desktop/chromedriver'在AWSEC2ARM風味機器中使用Chro
