selenium调用本地指定版本chrome及chromedriver
本帖最后由 FeiyuYip 于 2024-10-22 23:11 编辑> 最近chrome又自动更新了,导致原先的chromedriver不匹配,不能使用了。并且chrome更新的版本还特别奇怪,暂时没有匹配的chromedriver,真是头疼……
## chrome及chromedriver下载地址
(https://googlechromelabs.github.io/chrome-for-testing/)
这里下载130.0.6723.58版本的chrome及chromedriver后,解压待用(只测试了32位的)。chrome运行后是这样
(提示Testing版本,不过不影响调试网页)
## selenium调用本地指定版本chrome及chromedriver示例代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service# 新增 Service 导入
from selenium.webdriver.chrome.options import Options
import os
def main(url):
# Chrome options设置
chrome_options = Options()
chrome_options.binary_location = os.path.join(os.getcwd(), 'chrome-win32\chrome.exe')# 放在程序同路径,或可任意指定
chrome_driver_path = os.path.join(os.getcwd(), 'chromedriver-win32\chromedriver.exe')# 放在程序同路径,或可任意指定
# 添加无头模式
# chrome_options.add_argument("--headless")# 静默运行
# chrome_options.add_argument("--no-sandbox")# 不使用沙箱
# chrome_options.add_argument("--disable-dev-shm-usage")# 解决DevToolsActivePort文件不存在的错误
# 使用 Service 传入 ChromeDriver 路径
chrome_service = Service(chrome_driver_path)
# 初始化浏览器
browser = webdriver.Chrome(service=chrome_service, options=chrome_options)
browser.get(url)
print(browser.current_url)
browser.quit()
if __name__ == '__main__':
url = "https://www.baidu.com"# 示例URL
main(url)
可以试试,DrissionPage,坛友介绍的,不需要下载chromedriver 一般来说都用ChromeDriverManager来自动管理
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from pyefun import *
if __name__ == '__main__':
创建目录(取运行目录() + "/ChromeDriverManager/")
# 初始化ChromeDriverManager
manager = ChromeDriverManager()
# 获取应该使用的chromeDriver版本号组装成一个文件名
file = 取运行目录() + "/ChromeDriverManager/" + manager.driver.get_name() + "." + manager.driver.get_driver_version_to_download() + ".exe"
# 判断指定版本的chromeDriver是否存在于本地
if os.path.exists(file):
# 如果指定版本ChromeDriver文件存在于本地则使用下载好的ChromeDriver文件
chromedriver_path = file
else:
# 如果指定版本ChromeDriver文件不存在于本地则下载指定版本的ChromeDriver文件并且保存到本地方便下次使用
manager.driver.get_driver_version_to_download()
chromedriver_path = manager.install()
# 文件保存到本地的ChromeDriverManager目录下
文件_保存(file, 读入文件(chromedriver_path))
# 正常注册使用selenium服务
service = Service(file)
driver = webdriver.Chrome(service=service)
url = "https://www.52pojie.net"
driver.get(url)
print("请按任意键结束本程序")
input()
无阻 发表于 2024-10-23 04:12
一般来说都用ChromeDriverManager来自动管理
from selenium import webdriver ...
这样的话就会自动检测用户安装的Chromme版本和对应的ChromeDriver版本下载使用。
对于打包分发发布比较友好。
一般来说最新版Chrome用上一个版本的ChromeDriver也是可以用的
但是下载ChromeDriver这个步骤还得看网络。
我好几个客户出问题都是网络不好下载的ChromeDriver文件不完全 第一第一 无阻 发表于 2024-10-23 04:18
这样的话就会自动检测用户安装的Chromme版本和对应的ChromeDriver版本下载使用。
对于打包分发发布比较 ...
像您说的,下载的话有时需要看网络
并且我楼上贴的59版本,使用58版本chromedriver,没有办法使用 能否禁用chrome的自动更新呢?我觉得问题在于chrome老是自动更新还禁止不了,这才是问题所在 本帖最后由 mingkongk 于 2024-10-23 10:50 编辑
可以从根源上禁止Chrome的自动更新,找到Program Files (x86)中的Chrome的安装目录!禁止update文件夹写入修改权限就能永久禁止
https://imgsrc.baidu.com/forum/pic/item/30adcbef76094b36cc8ee1c9e5cc7cd98d109df2.jpg
https://gitee.com/dd1136161387/md_picture/raw/master/picture/Snipaste_2024-10-23_10-41-25.png 不是用edge自动下载比较好么 不再推荐使用 Selenium 了,被检测率太高了
俺推荐使用 DrissionPage ,效率很高
页:
[1]
2