zoukankan      html  css  js  c++  java
  • Ubuntu下的Selenium爬虫的配置

      在服务器Ubuntu系统上跑爬虫,爬虫是基于Selenium写的,遇到好几个问题,现在这里记录一下。

    1. 安装环境

      阿里云,Ubuntu16.04,因为没有界面,所以远程命令行操作。爬虫是基于Selenium写的,需要安装Chrome浏览器和Chromedriver。

      1.1 安装Chrome和Chromedriver

        Chrome直接去官网下载,安装稳定版,https://www.ubuntuupdates.org/ppa/google_chrome?dist=stable,下载deb格式的安装包,上传到服务器,用命令行安装:

        1 sudo dpkg -i google-chrome*.deb
        2 sudo apt-get install -f

        安装完成使用命令查看Chrome的版本,若出现版本号说明安装成功。

        1 google-chrome --version

        Chromedriver去淘宝镜像下载,http://npm.taobao.org/mirrors/chromedriver/,下载时选择与Chrome版本对应的Chromedriver,点开里面的notes.txt可以看到对应关系。下载后上传到服务器,或者 wget -N链接下载。下载后解压,若没有安装解压软件,使用下面的命令安装。

        1 sudo apt-get install unzip

        将解压后的文件移动到/usr/bin/文件下,添加执行权限。

        1 sudo mv chromedriver /usr/bin/
        2 sudo chmod +x /usr/bin/chromedriver

      1.2 安装Anaconda3

        去清华源下载Anaconda3,https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/,下载后上传到服务器,使用命令安装,此处要注意把Anaconda安装为Linux下多用户共享的软件,避免多个用户重复安装。

        1 sudo bash Anaconda3-5.2.0-Linux-x86_64.sh

        安装时有一个步骤是要求你输入安装路径,Linux下多用户共享的软件是在/usr/local目录下,所以填写这个目录。安装最后会提示问你要不要把Anaconda添加到系统路径,选Yes,然后更新root用户的设置(这样做还会避免另一个大坑,下面会讲到)。关闭窗口后生效。

        1 sudo source ~/.bashrc

        若已经为root用户安装了Anaconda,建议卸载后重新安装。卸载方法是删除原来的/usr/local/bin下Anaconda的安装目录,编辑root用户的设置文件:

        1 sudo vim ~/.bashrc

        把里面原来添加的Anaconda路径设置删除,然后更新一下设置。

        1 sudo source ~/.bashrc

        在命令行里输入python,出现的python版本是3.6而不是系统自带的2.7或3.5,说明安装成功。

      1.3 安装Selenium

        在root用户下安装:

        1 pip install selenium

        打开python,输入以下代码,不报错说明安装成功。

        1 from selenium import webdriver

        安装到这里就能跑代码了嘛?不,还不行,哈哈哈。

    2. 修改配置来执行代码

        Selenium跑不起来,报错。就不截图了,只是说不能正常启动。经过我的搜索,有两个问题会导致这个错误:

        selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally (Driver info: chromedriver=........

        1. 当前执行代码的用户是root用户,而root用户打开Chrome需要在沙盒里运行,webdriver里默认关闭了沙盒,所以报错。两种解决方法,为Ubuntu添加一个新用户或者修改代码里的设置。我只实验了第一种,添加了一个新用户,第二种没试。因为root用户只用来管理,新用户用来跑代码,分开不容易出错。

        Ubuntu里添加新用户的方法是在root用户下执行:

        1 sudo adduser username

        会让你设置密码。companyname,phone之类的直接enter跳过就行。

        2. 没有界面,所以装一个虚拟界面才行。

        在root用户下安装pyvirtualdisplay:

        1 pip install pyvirtualdisplay

        然后在代码里添加以下几行,进行测试:

        1 from selenium import webdriver
        2 from pyvirtualdisplay import Display
        3  
        4 if __name__ == '__main__':
        5     display = Display(visible=0, size=(800, 800))
        6     display.start()
        7     browser = webdriver.Chrome()
        8     browser.get('http://www.baidu.com')
        9     print (browser.title)

        大功告成。第一篇博客,嘻嘻。 如果还有问题那就是第一步安装的Chrome和Chromedriver版本不匹配导致的,仔细检查一下。

  • 相关阅读:
    业务领先模型(Business Leadership Model; BLM)
    快速了解云安全态势管理(CSPM)
    《贸易打造的世界:1400年至今的社会、文化与世界经济》笔记
    《消费社会》笔记
    《向上生长 看懂趋势,掌控未来》
    DSCMM 数据安全能力成熟度模型
    薪火
    《贸易的冲突:美国贸易政策200年》笔记
    近年火热的“信创”到底是什么
    什么是“以数据为中心的安全”?(一) —— 大家眼中的DCS
  • 原文地址:https://www.cnblogs.com/baijing1/p/9751399.html
Copyright © 2011-2022 走看看