Selenium + Headless Chrome with Python3

前言

今年 Google 发布了 chrome 59 / 60 正式版
众多新特性之中, 引起我注意的是 Headless mode
这意味着在无 GUI 环境下, PhantomJS 不再是唯一选择
本文源于腾讯qq的 web 登录这个需求, 体验一把新特性

实现

准备

  • Chrome
    *nix 系统需要 chrome >= 59
    Windows 系统需要 chrome >= 60
  • Python3.6
  • Selenium==3.4.*
  • ChromeDriver==2.31

核心代码

1
2
3
4
5
6
7
8
9
10
11
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

chrome_options.binary_location = r'C:\Users\hldh214\AppData\Local\Google\Chrome\Application\chrome.exe'
# chrome_options.binary_location = '/opt/google/chrome/chrome'

opener = webdriver.Chrome(chrome_options=chrome_options)

总结

在 PhantomJS 年久失修, 后继无人的节骨眼
Chrome 出来救场, 再次成为了反爬虫 Team 的噩梦

refs

https://developers.google.com/web/updates/2017/04/headless-chrome
https://duo.com/blog/driving-headless-chrome-with-python