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

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

系统要求:

Chrome 版本要求 
    Unix/Linux 系统要求 chrome >= 59 
    Windows 系统需要 chrome >= 602
Python 版本 >= 3.63
Selenium 版本 >= 3.44
ChromeDriver 版本 >= 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()

借鉴资料:

https://juejin.cn/post/7166869156489330724/

THE END