【问题标题】:Selenium get page's inspect element HTMLSelenium 获取页面的检查元素 HTML
【发布时间】:2022-01-24 15:05:20
【问题描述】:

我的目标是通过解析其检查数据来获得谷歌搜索结果的标题,如下所示:

Website title

我试图找到它所附加的标签并使用 find_element(By.XPATH) 搜索它,但这似乎不起作用。

Inspect location of wanted data

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')]"}

这是因为我正在解析页面源而不是检查数据吗?

【问题讨论】:

  • 你能分享你所有的代码吗? driver.find_element 将尝试查找特定元素,而不是整个页面的 HTML 代码
  • 刚刚编辑了最初的帖子:)

标签: python selenium web-scraping


【解决方案1】:

嗯,首先你错过了一个延迟。因此,修复它的最简单方法是在那里添加一个虚拟 time.sleep(5),而更好的方法是使用预期条件显式等待。
但这仍然行不通,因为driver.find_element(By.XPATH, "//div[contains(@class,'yuRUbf')]") 会给你一个网络元素对象,而不是文本。要获取文本,您需要在该 Web 元素上应用 .text 方法。
此外,您的定位器也不是很正确,应该改进。
无论如何,这应该会更好:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    相关资源
    最近更新 更多