• Chrome 浏览器的 ChromeOptions 参数介绍,selenium 动态渲染必看


    背景 

            在使用 selenium 浏览器渲染技术,爬取网站信息时,默认情况下就是一个普通的纯净的chrome浏览器,而我们平时在使用浏览器时,经常就添加一些插件,扩展,代理之类的应用。相对应的,当我们用chrome浏览器爬取网站时,可能需要对这个chrome做一些特殊的配置,以满足爬虫的行为。

            常用的行为有:

    1. 禁止图片和视频的加载:提升网页加载速度。
    2. 添加代理:用于翻墙访问某些页面,或者应对IP访问频率限制的反爬技术。
    3. 使用移动头:访问移动端的站点,一般这种站点的反爬技术比较薄弱。
    4. 添加扩展:像正常使用浏览器一样的功能。
    5. 设置编码:应对中文站,防止乱码。
    6. 阻止JavaScript执行。

    正文

    1. chromeOptions 介绍

           chromeOptions 是一个配置 chrome 启动是属性的类,通过这个类,我们可以为chrome配置如下参数(这个部分可以通过selenium源码看到):

    • 设置 chrome 二进制文件位置 (binary_location)
    • 添加启动参数 (add_argument)
    • 添加扩展应用 (add_extension, add_encoded_extension)
    • 添加实验性质的设置参数 (add_experimental_option)
    • 设置调试器地址 (debugger_address)

    2. chromeOptions 源码

    1. class Options(object):
    2. def __init__(self):
    3. # 设置 chrome 二进制文件位置
    4. self._binary_location = ''
    5. # 添加启动参数
    6. self._arguments = []
    7. # 添加扩展应用
    8. self._extension_files = []
    9. self._extensions = []
    10. # 添加实验性质的设置参数
    11. self._experimental_options = {}
    12. # 设置调试器地址
    13. self._debugger_address = None
    '
    运行

    3. 使用案例

    1. try:
    2. # 创建谷歌浏览器驱动参数对象
    3. chrome_options = webdriver.ChromeOptions()
    4. # 不加载图片
    5. prefs = {"profile.managed_default_content_settings.images": 2}
    6. chrome_options.add_experimental_option("prefs", prefs)
    7. # 使用headless无界面浏览器模式
    8. chrome_options.add_argument('--headless')
    9. chrome_options.add_argument('--disable-gpu')
    10. # chrome_options.binary_location = r'...\chrome.exe'
    11. # 加载谷歌浏览器驱动
    12. driver = webdriver.Chrome(r'...\chromedriver.exe')
    13. # 请求地址
    14. driver.get('https://item.jd.com/100038004369.html')
    15. wait = WebDriverWait(driver,10) # 等待10秒
    16. # 等待页面加载class名称为m-item-inner的节点,该节点中包含商品信息
    17. wait.until(EC.presence_of_element_located((By.CLASS_NAME,"w")))
    18. # 退出浏览器驱动
    19. driver.quit()
    20. except Exception as e:
    21. print(e)
    '
    运行

    4. 参数介绍 

    参数含义
    .add_argument('--disable-infobars') 禁止策略化
    .add_argument('--no-sandbox')解决DevToolsActivePort文件不存在的报错
    .add_argument('window-size=1920x3000')指定浏览器分辨率
    .add_argument('--disable-gpu')谷歌禁用GPU加速
    .add_argument('--disable-javascript')禁用javascript
    .add_argument('--incognito')隐身模式(无痕模式)
    .add_argument('--start-maximized')最大化运行(全屏窗口),不设置,取元素会报错
    .add_argument('--hide-scrollbars')隐藏滚动条, 应对一些特殊页面
    .add_argument('blink-settings=imagesEnabled=false')不加载图片, 提升速度
    .add_argument('--headless')浏览器不提供可视化页面(无头模式). linux下如果系统不支持可视化不加这条会启动失败
    .add_argument('disable-infobars')去掉Chrome提示受到自动软件控制
    .add_argument('lang=en_US')设置语言
    .add_argument('User-Agent=xxxxxx')设置User-Agent属性
    .add_argument('--kiosk-printing') 默认打印机进行打印
    .binary_location = r"...\chrome.exe"手动指定使用的浏览器位置
    .add_experimental_option("debuggerAddress", "127.0.0.1:9222") 调用原来的浏览器,不用再次登录即可重启

    prefs = {"":""}

    prefs["credentials_enable_service"] = False

    prefs["profile.password_manager_enabled"] = False

    .add_experimental_option("prefs", prefs) 

    设置prefs属性,屏蔽'保存密码'提示框
    .add_experimental_option('excludeSwitches', ['enable-automation'])以开发者模式启动调试chrome,可以去掉提示受到自动软件控制
    .add_experimental_option('useAutomationExtension', False) 去掉提示以开发者模式调用

  • 相关阅读:
    笔记本Win10系统一键重装操作方法
    为嵌入式设备编译Rust/dbus进程间通信组件
    Windows10安装blender教程
    国产域控TSN协议栈首发量产,理想汽车+映驰科技「抢先」
    【计算机网络】物理层:物理层相关概念解释
    java计算机毕业设计基于springboot电商项目(附源码讲解)
    【Unity】U3D TD游戏制作实例(四)建造防御塔:防御塔生成器、一个int代表多选框,圆上任意点位的坐标计算、制作防御塔预制件
    springboot+高校失物招领系统 毕业设计-附源码121441
    python pip
    Spring Boot Web 生成并显示二维码
  • 原文地址:https://blog.csdn.net/weixin_44259720/article/details/127095705