运行环境

selenium 支持 Chrome、Firefox、Safari 等主流浏览器。下面以 Chrome 浏览器为例。

Windows 环境部署

  1. 安装 Python3,用 pip 安装 selenium 包。
  2. 从官网下载安装 Chrome 浏览器。
  3. 下载 Chrome 浏览器驱动 chromedriver(下载地址),放在任意目录下,并加入 PATH 环境变量。
    注意:chromedriver 的版本要与 Chrome 浏览器的版本对应(在浏览器地址栏输入 about:version 可以查看浏览器版本,版本号看前三位就行)

Linux 环境部署

安装 Python3 和 selenium 包

  1. 下载 Python3 源码(下载地址),编译安装:

    1. $ wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
    2. $ tar -xzf Python-3.7.2.tgz
    3. $ cd Python-3.7.2
    4. $ sudo ./configure && sudo make && sudo make install
  2. 安装 selenium 包

    1. $ sudo pip3 install selenium

安装 Chrome 浏览器(CentOS 7)

CentOS 7 安装 Chrome 浏览器

安装 Chrome 浏览器(Ubuntu)

Ubuntu 安装 Chrome 浏览器

下载 chromedriver

下载地址注意事项与 Windows 相同。下载完成后移动到 /usr/bin/usr/local/bin 目录下,或者也可以将 chromedriver 所在目录加入 PATH 环境变量。

Python 调用 selenium

Python 调用 selenium

Chrome 无头模式

没有图形界面的主机上,浏览器无法启动,此时可以用 Chrome 的无头模式运行 selenium。(无头模式只是没有打开 GUI,但浏览器的渲染工作是真真正正在进行的)

使用无头模式:

  1. from selenium import webdriver
  2. chrome_options = webdriver.ChromeOptions()
  3. chrome_options.add_argument('--headless') # 运行 Chrome 时附加参数 --headless,表示以无头模式运行
  4. driver = webdriver.Chrome(chrome_options=chrome_options)

无头模式基本操作与一般模式相同。

无头模式中经常会用到保存截图的操作:driver.save_screenshot(path)el.save_screenshot(path),可以通过查看截图了解运行过程。

启动带有用户配置的浏览器

  1. from selenium import webdriver
  2. chrome_options = webdriver.ChromeOptions()
  3. chrome_options.add_argument('--user-data-dir=' + r'用户配置所在目录')
  4. driver = webdriver.Chrome(chrome_options=chrome_options)

在浏览器中输入 chrome://version,找到 个人资料路径,删除最后的 /default,剩下的就是用户配置所在目录。

遇到过的问题及解决方法

  1. linux 上以 root 身份运行 Chrome 时需要加 --no-sandbox 参数:

    1. chrome_options = webdriver.ChromeOptions()
    2. chrome_options.add_argument('--no-sandbox')
    3. driver = webdriver.Chrome(chrome_options=chrome_options)
  2. linux 上运行脚本时,需要在脚本开头加

    1. #!/usr/local/bin/python3
    2. # -*-coding:utf8-*-
  3. CentOS 下,如果要将脚本加入计划任务中定时运行,Python3 和脚本位置都必须是绝对路径

  4. 曾遇到过这种情况:linux 下手动执行脚本,执行成功;但用任务计划程序定时自动执行时,显示 chromedriver 不在环境变量中。这是因为使用任务计划程序时,环境变量 PATH 只包含 /usr/bin:/bin,只是正常情况下的一部分,所以最好将 chromedriver 放在 /usr/bin/bin 路径下。