吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1268|回复: 16
收起左侧

[Python 原创] selenium调用本地指定版本chrome及chromedriver

[复制链接]
FeiyuYip 发表于 2024-10-22 23:11
本帖最后由 FeiyuYip 于 2024-10-22 23:11 编辑

最近chrome又自动更新了,导致原先的chromedriver不匹配,不能使用了。并且chrome更新的版本还特别奇怪,暂时没有匹配的chromedriver,真是头疼……


1.png

chrome及chromedriver下载地址

Chrome for Testing availability
2.png
这里下载130.0.6723.58版本的chrome及chromedriver后,解压待用(只测试了32位的)。chrome运行后是这样

3.png
4.png
(提示Testing版本,不过不影响调试网页)

selenium调用本地指定版本chrome及chromedriver示例代码


[Python] 纯文本查看 复制代码
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)

免费评分

参与人数 4吾爱币 +8 热心值 +4 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
echoaku + 1 + 1 谢谢@Thanks!
restart19 + 1 + 1 谢谢@Thanks!
laozhang4201 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

modeng 发表于 2024-10-23 09:03
可以试试,DrissionPage,坛友介绍的,不需要下载chromedriver
无阻 发表于 2024-10-23 04:12
一般来说都用ChromeDriverManager来自动管理

[Python] 纯文本查看 复制代码
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:18
无阻 发表于 2024-10-23 04:12
一般来说都用ChromeDriverManager来自动管理

[mw_shl_code=python,true]from selenium import webdriver ...

这样的话就会自动检测用户安装的Chromme版本和对应的ChromeDriver版本下载使用。
对于打包分发发布比较友好。
一般来说最新版Chrome用上一个版本的ChromeDriver也是可以用的

但是下载ChromeDriver这个步骤还得看网络。
我好几个客户出问题都是网络不好下载的ChromeDriver文件不完全
小空520 发表于 2024-10-23 07:45
第一第一
 楼主| FeiyuYip 发表于 2024-10-23 08:42
无阻 发表于 2024-10-23 04:18
这样的话就会自动检测用户安装的Chromme版本和对应的ChromeDriver版本下载使用。
对于打包分发发布比较 ...

像您说的,下载的话有时需要看网络
并且我楼上贴的59版本,使用58版本chromedriver,没有办法使用
smme2021 发表于 2024-10-23 09:36
能否禁用chrome的自动更新呢?我觉得问题在于chrome老是自动更新还禁止不了,这才是问题所在
mingkongk 发表于 2024-10-23 10:45
本帖最后由 mingkongk 于 2024-10-23 10:50 编辑

可以从根源上禁止Chrome的自动更新,找到Program Files (x86)中的Chrome的安装目录!禁止update文件夹写入修改权限就能永久禁止

dft2010 发表于 2024-10-23 15:06
不是用edge自动下载比较好么
anning666 发表于 2024-10-23 16:54
不再推荐使用 Selenium 了,被检测率太高了
俺推荐使用 DrissionPage ,效率很高
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表