unDetected_chromedriver with webdriver_manager 几天前在抓取网站时运行良好,但突然开始抛出错误:
OSError: [Errno 8] Exec format error:
'/Users/pd/.wdm/drivers/chromedriver/mac64/127.0.6533.72/chromedriver-mac-x64/THIRD_PARTY_NOTICES.chromedriver'
我猜测它与最近更新的 webdriver_manager||有关|. 这是代码:
如果有人能帮助我,那就太好了,谢谢。
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support import expected_conditions as EC
def get_driver():
options = uc.ChromeOptions()
# options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-sim-usage")
options.add_argument("--start-maximized")
options.add_argument('--disable-popup-blocking')
driver = uc.Chrome(driver_executable_path=ChromeDriverManager().install(), options=options, version_main=116)
driver.maximize_window()
return driver
It would be really great if someone can help me on this, Thanks.
该错误“OSError: [Errno 8] Exec format error:”意味着尝试运行的 ChromeDriver 文件(在本例中为“THIRD_PARTY_NOTICES.chromedriver”)不是可执行文件,或者与的系统不兼容。
这可能是由于多种原因造成的,例如:
- webdriver_manager 下载了错误的 ChromeDriver 版本: 这可能是由于 webdriver_manager 和 undetected_chromedriver 之间的兼容性问题造成的。
- ChromeDriver 文件已损坏: 下载或安装过程中可能出现了问题,导致 ChromeDriver 文件损坏。
- 权限问题: 可能没有足够的权限来运行 ChromeDriver 文件。
可以尝试以下方法来解决此问题:
1. 指定 ChromeDriver 版本:
与其让 webdriver_manager 自动确定 ChromeDriver 版本,不如明确指定与的 Chrome 浏览器版本兼容的版本。可以从 https://chromedriver.chromium.org/downloads 下载特定版本的 ChromeDriver。
2. 重新安装 ChromeDriver:
-
首先,卸载现有的 ChromeDriver:
bash pip uninstall webdriver-manager chromedriver-binary
-
然后,重新安装 webdriver_manager 和 chromedriver-binary:
bash pip install webdriver-manager chromedriver-binary
3. 手动设置 ChromeDriver 路径:
- 从 https://chromedriver.chromium.org/downloads 下载与的 Chrome 浏览器版本对应的 ChromeDriver。
- 将下载的 ChromeDriver 文件解压缩到选择的目录。
-
在的代码中,使用
driver_executable_path
参数明确指定 ChromeDriver 的路径:
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def get_driver():
options = uc.ChromeOptions()
# options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-sim-usage")
options.add_argument("--start-maximized")
options.add_argument('--disable-popup-blocking')
driver = uc.Chrome(driver_executable_path="/path/to/chromedriver", options=options, version_main=116)
driver.maximize_window()
return driver
4. 检查文件权限:
确保对 ChromeDriver 文件具有执行权限。可以使用以下命令在终端中更改文件权限:
chmod +x /path/to/chromedriver
如果以上方法都无法解决问题,请尝试在的问题中提供更多信息,例如:
- 的操作系统和版本
- 的 Chrome 浏览器版本
- webdriver_manager 和 undetected_chromedriver 的版本
- 遇到的完整错误消息
这将有助于我更好地了解问题并提供更具体的解决方案。
标签:python,selenium-webdriver,web-scraping,undetected-chromedriver From: 78806812