我正在尝试在 Python 中运行 Selenium 以从 Genius.com 抓取歌词。由于某种原因,我的代码在浏览器保持打开状态的情况下无限期运行。这是我正在运行的代码:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
timeout = 10
driver = launchBrowser(path)
# Get Body Text
body = EC.presence_of_element_located(
By.CLASS_NAME, "ReferentFragmentdesktop__Highlight-sc-110r0d9-1"
)
WebDriverWait(driver, timeout).until(body)
paragraphs = driver.find_elements(
By.CLASS_NAME, "ReferentFragmentdesktop__Highlight-sc-110r0d9-1"
)
driver.quit()
我在代码的前面定义了
launchBrowser
和路径,对此没有任何问题。我希望我的程序在 WebDriverWait
达到超时时间或代码达到 driver.quit()
时关闭。由于某种原因,这两种情况都没有发生,并且我的浏览器窗口永远保持打开状态。任何帮助或建议将不胜感激。
我尝试过抓取其他网站,这些网站似乎工作正常,但由于某种原因,这段代码陷入了永久循环,我不确定为什么。我正在使用 Chrome。
我猜
launchBrowser(path)
是一个为您打开浏览器的功能。我也猜测
未找到paragraphs = driver.find_elements( By.CLASS_NAME, "ReferentFragmentdesktop__Highlight-sc-110r0d9-1" )
。
有了
from selenium.webdriver import Chrome
,就有Chrome().implicitly_wait()
...
defimplicitly_wait(self, time_to_wait: float) -> None
设置粘性 隐式等待找到元素的超时,或命令 完全的。每个会话只需调用该方法一次。到 设置调用execute_async_script的超时,请参阅 设置脚本超时。
这将等待几秒钟,如果找不到元素或命令无法完成,则会引发异常。