Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

Linux安装selenium执行Python程序

2022/02/13 环境配置 Python Linux
Word count: 1,090 | Reading time: 5min

Linux安装selenium执行Python程序

  1. 配置python运行环境

  2. 安装selenium,pip install selenium

  3. 安装chrome

    提供下载网站chromedownloads,下载google-chrome-stable_current_amd64-75.0.3770.80.deb

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ sudo apt-get install libxss1 libappindicator1 libindicator7
    # 注意需要先把google-chrome-stable_current_amd64-75.0.3770.80.deb 下载下来
    $ sudo dpkg -i google-chrome-stable_current_amd64-75.0.3770.80.deb
    # 执行sudo dpkg -i google-chrome*.deb后报错的话,那就执行一下sudo apt-get install -f

    # 安装后在/usr/bin目录下查看是否有google-chrome文件
    # 检查chrome版本:
    $ google-chrome-stable --version

    # 当时无法查到版本,并报错error while loading shared libraries: libasound.so.2,
    # 输入sudo apt-get install -f后解决
    $ google-chrome-stable --version
  4. 安装chromedriver

    直接按照浏览器版本去找对应的driver就行了。(如果不能完全一一对应,就找大版本号(主版本号)对应、次版本号比浏览器版本号稍大的都行), 此外,对于windows的用户来说,win64的操作系统用win32的就行。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ wget -N http://chromedriver.storage.googleapis.com/75.0.3770.8/chromedriver_linux64.zip
    $ unzip chromedriver_linux64.zip
    $ sudo chmod +x chromedriver
    $ sudo mv -f chromedriver /usr/local/share/chromedriver
    $ sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
    $ sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedrive

    $ chromedriver -v
    # 如果发现版本不对,chrome可以使用这样卸载:
    $ yum remove google-chrome
    # chromedriver可以直接删除目录:
    $ sudo rm -f /usr/bin/chromedriver
  5. 编写python测试代码

1
2
3
4
5
6
7
8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get('https://www.baidu.com/')

我使用的xshell会提示我转发, 因此需要在会话中关闭该属性: 属性->连接->SSH->隧道->取消"转发X11连接到"的勾选

报错记录:

Message: unknown error: Chrome failed to start: exited abnormally (unknown error: DevToolsActivePort file doesn't exist) (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

解决方法:添加参数chrome_options.add_argument(’–no-sandbox’)

1
2
3
4
5
6
7
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('user-agent=%s' % random.choice(MY_USER_AGENT_PC))
driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', chrome_options=chrome_options)
driver.set_window_size(1366, 1000) # 调整页面尺寸
driver.implicitly_wait(3)

更新

更新chrome

ubuntu,还有其他linux下的chrome不会自动更新,因为是通过包进行管理的,想要获取最新版本的chrome可以使用下面的方法: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

然后将安装包解压,会自动覆盖当前的chrome版本,插件什么的都不会变: 输入sudo dpkg -i ./google-chrome-stable_current_amd64.deb后会提升:Unpacking google-chrome-stable (92.0.4515.159-1) over (75.0.3770.80-1) …

更新chromedriver

在镜像网站下载合适的版本: http://npm.taobao.org/mirrors/chromedriver/

再解压更新:

1
2
3
4
5
$ unzip chromedriver_linux64.zip
$ sudo chmod +x chromedriver
$ sudo mv -f chromedriver /usr/local/share/chromedriver
$ sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver -f
$ sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedrive -f

附录

pyenv:Linux下多Python版本管理工具

在开发Python程序的时候,有时候可能需要在不同版本的Python上进行测试、运行。pyenv就是这么一个管理多版本Python的工具。由于在Windows中我们可以同时安装多个版本的Python,并且通过Pycharm手动选择想要版本的解释器,但是在Linux下就没那么方便了,所以这里是在Linux下介绍该工具。

安装

$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

Github链接:https://github.com/pyenv/pyenv-installer, 这个bash脚本中主要是得将pyenv克隆到用户目录下去,由于网络链接的问题,这个非常容易失败。我的建议是直接吧内容复制下来后写成pyenv_installer.sh文件,然后命令行运行bash pyenv_installer.sh,而不是curl -L xx |bash

1
2
3
4
5
6
Cloning into '/home/mrli/.pyenv'...
Cloning into '/home/mrli/.pyenv/plugins/pyenv-doctor'...
Cloning into '/home/mrli/.pyenv/plugins/pyenv-installer'...
Cloning into '/home/mrli/.pyenv/plugins/pyenv-update'...
Cloning into '/home/mrli/.pyenv/plugins/pyenv-virtualenv'...
Cloning into '/home/mrli/.pyenv/plugins/pyenv-which-ext'...

很容易失败,在调好网络链接后,能做的只有多次尝试(我花了两个半小时才下下来)

增加环境变量

1
2
3
4
5
6
7
8
9
sudo vim ~/.bachrc
# 添加以下内容
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
# 最后刷新shell: `source ~/.bashrc` or `exec $SHELL`
source ~/.bashrc
# 测试
pyenv --help

Author: Mrli

Link: https://nymrli.top/2019/09/24/Linux安装selenium执行Python程序/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
OpenAI Gym使用、rendering画图
NextPost >
Ubuntu16.04+CUDA toolkit10.1+cudNN7.6+bazel0.26.1
CATALOG
  1. 1. Linux安装selenium执行Python程序
    1. 1.1. 报错记录:
    2. 1.2. 更新
  2. 2. 附录
    1. 2.1. pyenv:Linux下多Python版本管理工具