我的目標是通過決議其檢查資料來獲得谷歌搜索結果的標題,如下所示:
網站標題
我試圖找到它附加到的標簽并使用 find_element(By.XPATH) 搜索它,但這似乎不起作用。
檢查所需資料的位置
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
web = "https://www.google.com/search?q=crash"
path = "C:\\Users\\simon\\Downloads\\chromedriver_win32\\chromedriver.exe"
driver = webdriver.Chrome(path)
driver.get(web)
html = driver.page_source
elem = driver.find_element(By.XPATH, "//div[contains(@class,'yuRUbf')]")
print(elem)
但只要得到這個輸出:
<selenium.webdriver.remote.webelement.WebElement (session="29b69f91490fc177d1833f2fc156ec01", element="0289ff09-6e3d-4373-ab09-b265cc3b1206")>
這沒有用。如果我轉到下一個嵌套類,我會收到此錯誤:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[contains(@class,'LC201b MBeuO DKV0Md')]"}
這是因為我正在決議頁面源而不是檢查資料嗎?
uj5u.com熱心網友回復:
好吧,首先你錯過了一個延遲。因此,修復它的最簡單方法是在time.sleep(5)那里添加一個虛擬物件,而更好的方法是使用預期條件顯式等待。
但這仍然行不通,因為driver.find_element(By.XPATH, "//div[contains(@class,'yuRUbf')]")會給你一個 web 元素物件,而不是文本。要獲取文本,您需要.text在該 Web 元素上應用該方法。
此外,您的定位器也不是很正確,應該改進。
無論如何,這應該會更好:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
web = "https://www.google.com/search?q=crash"
path = "C:\\Users\\simon\\Downloads\\chromedriver_win32\\chromedriver.exe"
driver = webdriver.Chrome(path)
wait = WebDriverWait(driver, 20)
driver.get(web)
html = driver.page_source
elem = wait.until(EC.visibility_of_element_located((By.XPATH, "//div[contains(@class,'yuRUbf')]")))
print(elem.text)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/420601.html
標籤:
