在服务器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
     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/
     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.-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
     from pyvirtualdisplay import Display
    
     if __name__ == '__main__':
     display = Display(visible=0, size=(800, 800))
     display.start()
     browser = webdriver.Chrome()
     browser.get('http://www.baidu.com')
     print (browser.title)

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

Ubuntu下的Selenium爬虫的配置的更多相关文章

  1. Linux(Ubuntu)下MySQL的安装与配置

    转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...

  2. Ubuntu下安装、激活并配置Pycharm

    Ubuntu下安装.激活并配置Pycharm 最近在学习Python这门语言,到了需要Python编译器学习的阶段,通过网上了解各个Python编译器的优缺点,最后选择了pycharm作为Python ...

  3. Ubuntu下安装JDK以及相关配置

    1.查看系统位数,输入以下命令即可 getconf LONG_BIT 2.下载对应的JDK文件,我这里下载的是jdk-8u60-linux-64.tar.gz 3.创建目录作为JDK的安装目录,这里选 ...

  4. Fedora和Ubuntu下安装OpenGL开发环境配置

    Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库 ...

  5. ubuntu下的openfire安装、配置、运行

    openfire服务器              Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议.您可以使用它轻易的构建高效率的即时通信服务器.Op ...

  6. Java全栈程序员之02:Ubuntu下Java环境安装、配置、测试

    在上文讲完之后,我们手里的ubuntu只能算是一个上网机,什么也干不了,本篇我们将折腾它为开发机. 这里,我们这里假定你对linux体系是初级选手,所以本篇会讲的啰嗦一点,高手就出门左转吧. 1.安装 ...

  7. Ubuntu下Hadoop的安装和配置

    最近又需要要搭hadoop环境,所以开始学习,下面是我的笔记,仅供大家参考! Hadoop安装: JDK1.6+ 操作系统:Linux,Window和Unix也可以做Hadoop的开发,只有Linux ...

  8. [转载]Ubuntu下apache的安装与配置

    原文地址:https://blog.csdn.net/gatieme/article/details/53025505 1 安装apache 在 Ubuntu 上安装 Apache,有两种方式 使用源 ...

  9. ubuntu下Tomcat7的安装和配置

    和前几个软件一样,Tomcat 同样是由JAVA开发的,所以,在安装前一定要装好JDK. 大家可以到 http://tomcat.apache.org/download-70.cgi 下载最新的Tom ...

随机推荐

  1. C# DataGridView改变行颜色无效问题

    有一个需求是DataGridView中不符合要求的行变为红色,这网上查到的代码是 Row.DefaultCellStyle.BackColor = Color.Red;即可 但是写完之后发现不起作用 ...

  2. VMware虚拟机共享宿主机硬盘步骤

    1.打开设置 2. 进去设置后,选择选项选项卡,启用文件夹共享,添加文件夹即可 注:虚拟机安装完成后我先装了 VMwareTools,然后进行的共享操作,貌似不安装时无法启用第三步,即 总是启用 按钮 ...

  3. mac下mysql安装及配置启动

    ---恢复内容开始--- 原始链接:https://segmentfault.com/q/1010000000475470 按照如下方法成功安装并启动: mysql.server start//启动服 ...

  4. Linux运维跳槽40道面试精华题

    Linux运维跳槽40道面试精华题 运维派 3天前 1.什么是运维?什么是游戏运维? 1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护 ...

  5. centos7 lamp

    yum install libmcrypt libmcrypt-devel mcrypt mhash zlib zlib-devel libpng libpng-devel freetype free ...

  6. Excel VBA附合导线平差自动计算表

    这是6,7年前做的一个excel vba自动计算附合导线平差的表格. 对于做测绘的朋友来说,附合导线平差是最基础的技能,目前来说,能平差的软件和工具也很多,像南方的平差易,科傻平差.清华三维平差等,但 ...

  7. http协议中的响应代码从 1xx ~ 5xx,一共有41种

    http协议中的响应代码从 1xx ~ 5xx,一共有41种 http://how2j.cn/k/http/http-response-code/572.html

  8. 安卓使用TextView实现图片加文字说明

    背景:通讯录列表,每个单元格显示头像+名字,且头像显示圆形 方案一:ImageView + TextView 方案二:只用TextView + drawableLeft 属性 <TextView ...

  9. 比较两个Date类型的数据相差几年

    package com.utils; import java.text.DecimalFormat; import java.text.ParseException; import java.text ...

  10. MySQL复制表-INSERT INTO SELECT

    基础table为: mysql> select * from staff; +----+----------+-------+ | id | name | slary | +----+----- ...