运行环境
selenium 支持 Chrome、Firefox、Safari 等主流浏览器。下面以 Chrome 浏览器为例。
Windows 环境部署
- 安装 Python3,用 pip 安装 selenium 包。
- 从官网下载安装 Chrome 浏览器。
- 下载 Chrome 浏览器驱动 chromedriver(下载地址),放在任意目录下,并加入
PATH
环境变量。
注意:chromedriver 的版本要与 Chrome 浏览器的版本对应(在浏览器地址栏输入about:version
可以查看浏览器版本,版本号看前三位就行)
Linux 环境部署
安装 Python3 和 selenium 包
下载 Python3 源码(下载地址),编译安装:
$ wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
$ tar -xzf Python-3.7.2.tgz
$ cd Python-3.7.2
$ sudo ./configure && sudo make && sudo make install
安装 selenium 包
$ sudo pip3 install selenium
安装 Chrome 浏览器(CentOS 7)
安装 Chrome 浏览器(Ubuntu)
下载 chromedriver
下载地址、注意事项与 Windows 相同。下载完成后移动到 /usr/bin
或 /usr/local/bin
目录下,或者也可以将 chromedriver 所在目录加入 PATH
环境变量。
Python 调用 selenium
Chrome 无头模式
在没有图形界面的主机上,浏览器无法启动,此时可以用 Chrome 的无头模式运行 selenium。(无头模式只是没有打开 GUI,但浏览器的渲染工作是真真正正在进行的)
使用无头模式:
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') # 运行 Chrome 时附加参数 --headless,表示以无头模式运行
driver = webdriver.Chrome(chrome_options=chrome_options)
无头模式基本操作与一般模式相同。
无头模式中经常会用到保存截图的操作:driver.save_screenshot(path)
或 el.save_screenshot(path)
,可以通过查看截图了解运行过程。
启动带有用户配置的浏览器
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--user-data-dir=' + r'用户配置所在目录')
driver = webdriver.Chrome(chrome_options=chrome_options)
在浏览器中输入 chrome://version
,找到 个人资料路径,删除最后的 /default,剩下的就是用户配置所在目录。
遇到过的问题及解决方法
linux 上以 root 身份运行 Chrome 时需要加
--no-sandbox
参数:chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome(chrome_options=chrome_options)
在 linux 上运行脚本时,需要在脚本开头加
#!/usr/local/bin/python3
# -*-coding:utf8-*-
在 CentOS 下,如果要将脚本加入计划任务中定时运行,Python3 和脚本位置都必须是绝对路径。
曾遇到过这种情况:linux 下手动执行脚本,执行成功;但用任务计划程序定时自动执行时,显示 chromedriver 不在环境变量中。这是因为使用任务计划程序时,环境变量
PATH
只包含/usr/bin:/bin
,只是正常情况下的一部分,所以最好将 chromedriver 放在/usr/bin
或/bin
路径下。