在服务器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*.deb2 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 webdriver2 from pyvirtualdisplay import Display3  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版本不匹配导致的,仔细检查一下。

转载于:https://www.cnblogs.com/baijing1/p/9751399.html

Ubuntu下的Selenium爬虫的配置相关推荐

  1. 如何在无显示器的ubuntu下跑selenium

    2019独角兽企业重金招聘Python工程师标准>>> 如何在无显示器的ubuntu下跑selenium 博客分类: java Selenium是一个web自动化测试框架.用它可以实 ...

  2. Ubuntu下利用JDK的Keytool配置Tomcat7.0的SSL协议

    Ubuntu下利用JDK的Keytool配置Tomcat7.0的SSL协议: 1.用JDK自带的Keytool生成服务器证书:   1)打开终端控制台,转向tomcat主目录,执行生成keystore ...

  3. Ubuntu下mongodb的安装与配置

    MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便.这里介绍在Ubuntu下mongodb的安装与配置. 1.下载 mongodb可以在官网上下载,地址,选择Ubun ...

  4. Ubuntu下域名服务器bind9 安装与配置

    Ubuntu下域名服务器bind9 安装与配置 //更新 ubuntu :sudo apt update //1.安装: //1.2安装bind9 //sudo apt-get install bin ...

  5. vscode在ubuntu下安装插件,同时配置python虚拟环境、ctrl+鼠标滚轮放大代码窗口设置

    linux下vs code 两大问题: 1.无法在code中切换虚拟环境 2.文件夹有时候会莫名其妙打不开,似乎和文件夹的命名有关系. 已弃坑,不再使用. ---------------------- ...

  6. linux apktool使用教程,简单介绍ubuntu下apktool的使用与配置

    apktool 使用 1.解包(反编译):apktool d -f xxx.apk -o xxx 2.二次打包: apktool b xxx -o xxx.apk 3.签名 java -jar sig ...

  7. Ubuntu 下 LaTeX 图形环境的配置——使用Kile

    Ubuntu下LaTeX 的配置 利用新立得软件包管理器查看,我下载的软件有: 在TeX创作里面查看,安装了下列文件 latex-beamer,latex-xcolor,pgf,tex-common, ...

  8. Ubuntu 下ALSA声卡设备的配置与使用

    最近做项目有一个需求,就是对ubuntu下的ALSA声卡进行使用,在摸索了一大圈之后,将所得记录下来,以备后期查看. 首先先插上声卡设备 以下所用的声卡设备皆为3.5mm的耳机测试. 需要使用usb转 ...

  9. Ubuntu下安装hive,并配置mysql作为元数据库

    一.安装hive 1. 下载并解压hive源程序 sudo tar -zxvf ./apache-hive-1.2.1-bin.tar.gz -C /usr/local # 解压到/usr/local ...

最新文章

  1. linux 新建用户和权限分配
  2. 渗透测试之子域到父域的横向移动(Sid History)
  3. python写linux脚本_Linux下设置python脚本文件为服务
  4. ORACLE数据库事务隔离级别
  5. UK Biobank专题
  6. 中国体外冲击波碎石机市场趋势报告、技术动态创新及市场预测
  7. 多个Wyze 摄像头漏洞可导致攻击者接管设备并访问视频
  8. 【论文写作】学生信息管理系统总体设计如何写
  9. 同一页面中加载两个相同的控件,结果只能出来一个,这是为什么
  10. 最新android studio 第三方库包导入方法jar,so,module
  11. Excel导入SQL(VB.NET版)
  12. NLPIR/ICTCLAS 2015 分词系统使用
  13. 从零学Java(1)之面向对象
  14. android外设按键,Android 外接键盘的按键处理 .
  15. 金融衍生品已成为金融革命新力量
  16. 华为 QOS服务质量基础知识总结
  17. 浅谈工业网络架构及安全
  18. 获取ZoneId 收录的时区和偏移量
  19. clear 方法的解释及用法
  20. access查找出生日期年份_access中时间日期查询的一些总结

热门文章

  1. 用 Python 做动态二维码哄女友开心
  2. A-CF29B Traffic Lights
  3. mac活动监视器 的含义
  4. 表白网站|程序猿的爱情记录网站模版|情侣日记网页
  5. 【C++编程语言】之C++对象模型和this指针
  6. 李治军老师操作系统实验6----地址映射与共享-共享内存函数(shmget、shmat、shmctl)
  7. Wordpress建站教程:Compress JPEG PNG Images图片压缩插件的使用
  8. 图的遍历之深度优先搜索(DFS)
  9. windows下CMake fdk-aac
  10. 使用picard工具去重自己的sam/bam数据