在服务器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爬虫的配置的更多相关文章
-
Linux(Ubuntu)下MySQL的安装与配置
转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...
-
Ubuntu下安装、激活并配置Pycharm
Ubuntu下安装.激活并配置Pycharm 最近在学习Python这门语言,到了需要Python编译器学习的阶段,通过网上了解各个Python编译器的优缺点,最后选择了pycharm作为Python ...
-
Ubuntu下安装JDK以及相关配置
1.查看系统位数,输入以下命令即可 getconf LONG_BIT 2.下载对应的JDK文件,我这里下载的是jdk-8u60-linux-64.tar.gz 3.创建目录作为JDK的安装目录,这里选 ...
-
Fedora和Ubuntu下安装OpenGL开发环境配置
Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库 ...
-
ubuntu下的openfire安装、配置、运行
openfire服务器 Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议.您可以使用它轻易的构建高效率的即时通信服务器.Op ...
-
Java全栈程序员之02:Ubuntu下Java环境安装、配置、测试
在上文讲完之后,我们手里的ubuntu只能算是一个上网机,什么也干不了,本篇我们将折腾它为开发机. 这里,我们这里假定你对linux体系是初级选手,所以本篇会讲的啰嗦一点,高手就出门左转吧. 1.安装 ...
-
Ubuntu下Hadoop的安装和配置
最近又需要要搭hadoop环境,所以开始学习,下面是我的笔记,仅供大家参考! Hadoop安装: JDK1.6+ 操作系统:Linux,Window和Unix也可以做Hadoop的开发,只有Linux ...
-
[转载]Ubuntu下apache的安装与配置
原文地址:https://blog.csdn.net/gatieme/article/details/53025505 1 安装apache 在 Ubuntu 上安装 Apache,有两种方式 使用源 ...
-
ubuntu下Tomcat7的安装和配置
和前几个软件一样,Tomcat 同样是由JAVA开发的,所以,在安装前一定要装好JDK. 大家可以到 http://tomcat.apache.org/download-70.cgi 下载最新的Tom ...
随机推荐
-
SQLServer 日期函数大全
一.统计语句 1.--统计当前[>当天00点以后的数据] ) ) ORDER BY dateandtime DESC 2.--统计本周 3.--统计本月 4.统计当前 SELECT * FROM ...
-
给 admin 新建的 hdfs 文件的权限
su hdfs hdfs dfs -chown -R admin / org.apache.hadoop.security.AccessControlException: Permission d ...
-
深入理解SELinux SEAndroid
参考文章: 一. http://blog.csdn.net/innost/article/details/19299937 二. http://blog.csdn.net/innost/article ...
-
使用Ambari部署hadoop集群
准备工作 1. 设置sudo免密码登陆 由于CentOS安装之后,普通用户无sudo权限,故应该设置sudo权限. 参考文章:http://www.cnblogs.com/maybob/p/32988 ...
-
QML的渲染方式相较于之前的版本也有了重大的更新(CPU线程负责绘制,GPU线程负责渲染),还有好多经常评论 good
作者:qyvlik链接:http://www.zhihu.com/question/38867614/answer/78583440来源:知乎著作权归作者所有,转载请联系作者获得授权. 做UI啊.如果 ...
-
ArrayList/List 泛型集合
List泛型集合 集合是OOP中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一. 为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合: a.使用ArrayList 直接 ...
-
python 之 初识模块
什么是模块 什么是模块 一个.py文件 就是一个模块 我们使用import加载的模块分为4个通用类别 1.py文件 2.包好一组模块的包(带__init__.py文件的文件夹) 3.内置模块 4.已被 ...
-
nrf52832 SDK 15.3.0 Flash 操作
debug中遇到的问题: 1,写入数据,读出来不对 2,看之前被人写的代码发现,读flash直接用的标准C库函数:memcpy,但是,写用的专门的flash写接口.所以,我这里两个疑问: A,写fla ...
-
tensorflow的ckpt文件总结
1.TensorFlow的模型文件 --checkpoint_dir | |--checkpoint | |--MyModel.meta | |--MyModel.data-00000-of-0000 ...
-
WebForm的初步认识
嘿嘿,这里就简单的总结一下初步学习webform以及对他的认识,其实大家都认为webform很讨厌,因为好多都是给我们封装好的,而且现在好多的公司已经慢慢的从中逃离出来选择使用mvc架构,甚至好多的项 ...