在 Chrome 59中开始搭载Headless Chrome。这是一种在无需显示headless的环境下运行 Chrome 浏览器的方式。从本质上来说,就是不用 chrome 浏览器来运行 Chrome 的功能!它将 Chromium 和 Blink 渲染引擎提供的所有现代 Web 平台的功能都带入了命令行。
HeadlessChrome启动
Chrome --headless --disable-gpu --remote-debugging-port=9222 https://www.baidu.com
HeadlessChrome打印网站DOM
chrome --headless --disable-gpu --dump-dom https://www.baidu.com/
将页面打印为PDF
--print-to-pdf 标志将页面转出为PDF 文件:
chrome --headless --disable-gpu --print-to-pdfhttps://www.baidu.com/
使用Headless Chrome截图
要捕获页面的屏幕截图,请使用--screenshot 标志:
chrome --headless --disable-gpu--screenshot https://www.baidu.com/
HeadlessChrome在爬虫中的应用
由于存在大量的网页是动态生成的,在使用浏览器查看源代码之后,发现网页dom只有一个root元根元素和一堆js引用,根本看不到网页的实际内容,因此,爬虫不仅需要把网页下载下来,还需要运行JS解析器,将网站呈现出最终的效果。
在Headless出现之前,主要流行的是PhantomJS这个库,原理是模拟成一个实际的浏览器去加载网站。Headless Chome出现之后,PhantomJS地位开始不保。毕竟Headless Chome本身是一个真正的浏览器,支持所有chrome特性,而PhantomJS只是模拟,因此Headless Chome更具优势,下面是使用Python Selenium调用Headless Chome的代码:
fromselenium import webdriver
fromselenium.webdriver.chrome.options import Options
chrome_options= Options()
chrome_options.add_argument('--headless')
driver =webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.baidu.com/")
总结:使用Headless Chome可以在无界面的形式下体验Chrome的完成功能,对于自动化测试和爬虫等而言是一个非常给力的工具。
headless chrome安装
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:canonical-chromium-builds/stage
sudo apt-get update
sudo apt-get install chromium-browser
chromium-browser --headless --remote-debugging-port=9222 https://www.baidu.com --disable-gpu
这里是使用headless模式进行远程调试,ubuntu上大多没有gpu,所以--disable-gpu以免报错。
curl http://localhost:9222
能够看到调试信息应该就是装好了。
#获取网页源码
chromium-browser --headless --dump-dom https://www.baidu.com/ --disable-gpu
#获取网页转换成PDF
chromium-browser --headless --print-to-pdf https://www.baidu.com/ --disable-gpu
#截图
chromium-browser --headless --screenshot --window-size=1280,1696 https://www.baidu.com/ --disable-gpu
添加 PPA 源
添加 PPA 源的命令为:sudo add-apt-repository ppa:user/ppa-name
添加好记得要更新一下:sudo apt-get update
删除 PPA 源
删除 PPA 源的命令格式则为:sudo add-apt-repository -r ppa:user/ppa-name
然后进入 /etc/apt/sources.list.d 目录,将相应 ppa 源的保存文件删除。
最后同样更新一下:sudo apt-get update