之前讲过Selenium+Chrome,但那需要桌面环境。本来想研究下基于无桌面环境的Selenium + Phantomjs,在使用的过程中惊闻selenium将抛弃,无奈只能放弃,经google,发现去年Google发布了Headless模式的Chrome(Chrome 59 beta开始支持headless模式),Headless指无需桌面环境,可直接运行于服务器,在爬虫、自动化测试键值无敌,本篇简要介绍如何安装与如何通过Selenium连接Headless Chrome。
安装
环境:Ubuntu14.04 Server
安装 google-chrome
- 安装相应库文件:
sudo apt-get install libxss1 libappindicator1 libindicator7
- 下载google-chrome:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- 安装google-chrome:
sudo dpkg -i google-chrome*.deb
- 如果3报错,运行
sudo apt-get install -f
- 运行:
google-chrome --headless --remote-debugging-port=8888 https://chromium.org --disable-gpu
,如果已root权限运行,需添加:--no-sandbox
- 再启终端,访问:
curl http://localhost:8888
安装chrome-driver
- 下载文件:
wget https://chromedriver.storage.googleapis.com/2.31/chromedriver_linux64.zip
- 解压:
unzip chromedriver_linux64.zip
- 移动:
mv chromedriver /usr/local/bin
- 赋予权限:
sudo chmod u+x,o+x /usr/local/bin/chromedriver
- 测试:
chromedriver
与Selenium相结合
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox') #root用户需要添加此项
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='/usr/local/bin/chromedriver')
driver.get('https://www.github.com')
print(driver.title.encode('utf-8'))
driver.close()
总结
最近简单学习了Selenium+Chrome
的使用方法,是为了接下来爬取动态页面使用的。后面会再与Scrapy相结合。
网友评论