Python Chrome handless(无界面浏览器,add_argument 支持哪些参数,替代 PhantomJS)

453 阅读1分钟
  • Chrome handless 模式,Google 针对 Chrome 浏览器 59版 新增的一种模式,可以让你不打开 UI 界面的情况下使用 Chrome 浏览器,所以运行效果与 Chrome 保持完美一致。

  • 系统要求:

    1Chrome 版本要求
        Unix/Linux 系统要求 chrome >= 59
        Windows 系统需要 chrome >= 60
    2Python 版本 >= 3.6
    3Selenium 版本 >= 3.4
    4ChromeDriver 版本 >= 2.31
    
  • ChromeOptions 常用配置

    # 配置对象
    options = webdriver.ChromeOptions()
    options.add_experimental_option("excludeSwitches", ["enable-automation"])  # 禁止浏览器被监控提示
    options.add_experimental_option('detach', True) # 不自动关闭浏览器
    options.add_argument('--headless') # 设置无窗口模式
    options.add_argument('--disable-gpu') # 禁用gpu加速
    options.add_argument("--user-agent='  '")  # 设置请求头user-agent
    options.add_argument('--start-maximized')  # 设置窗口最大化
    options.add_argument('--window-size=200,200')  # 设置窗口大小
    options.add_argument('--incognito')  # 无痕模式
    options.add_argument('--hide-scrollbars')  # 隐藏滚动条
    options.add_argument('--disable-javascript')  # 禁用js
    options.add_argument('--blink-settings=imagesEnabled=false')  # 不加载图片(拦截图片)
    
  • Chrome handless(无界面浏览器) 使用(直接拷贝就能用,初始化格式固定的)

    # 导入 selenium
    from selenium import webdriver
    # 如果需要指定路径,但是路径在新版本中被重构到 Service 函数中了
    from selenium.webdriver.chrome.service import Service
    # 配置对象
    from selenium.webdriver.chrome.options import Options
    # 导入常量对象(可以点进去看看,其实也可以手写)
    # from selenium.webdriver.common.by import By
    # 导入 定时器
    from time import sleep
    
    # 浏览器封装
    def share_browser ():
      # 浏览器驱动路径(可以是下载的驱动,也可以直接使用电脑上 Chrome 浏览器的驱动,找到路径就行)
      # win_path = 'chromedriver.exe' 
      mac_path = 'chromedriver'
    
      # 配置对象
      options = Options()
      # options = webdriver.ChromeOptions() # 也可以这样创建 options 对象
      # options.add_experimental_option('detach', True) # 不自动关闭浏览器
      options.add_argument('--headless') # 设置无窗口模式
      options.add_argument('--disable-gpu') # 禁用gpu加速
    
      # 创建浏览器
      service = Service(mac_path)
      browser = webdriver.Chrome(service=service, options=options)
      # 返回
      return browser
    
    # 创建浏览器
    browser = share_browser()
    
    # 打开指定网址
    browser.get('https://www.baidu.com')
    
    # 保存快照
    browser.save_screenshot('baidu.png')
    
    # 睡眠
    sleep(2)
    
    # 退出
    browser.quit()