1. linux下运行selenium 爬虫
由于代码需要迁移至linux下定期更新维护,需要在linux下配置相关环境
-
chrome浏览器:yum install 安装rpm包
下载地址:http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/
https://www.chromedownloads.net/chrome64linux/ -
chromedriver:下载对应版本后放入 /usr/bin目录下
添加执行权限:chmod +x /usr/bin/chromedriver
或在代码中指定路径亦可 -
查看二者的版本:chromedriver -version、google-chrome --version
2. 遇到的问题
-
采用google-chrome测试浏览器能否打开时报错,发现linux下不能以root身份启动chrome
-
采用google-chrome --no-sandbox启动仍然不可
-
linux环境下运行selenium,不需要显示chrome界面,但实际仍在浏览器内进行操作。采用headless模式(chrome浏览器在59版本之后的正式版里加入了headless模式 ,即:无界面模式),采用google-chrome --no-sandbox --headless启动仍然不可
-
加入https://blog.csdn.net/shlhhy/article/details/106273174中的解决方案后,发现网页的前面部分抓取到了,但正文部分仍然是之前的奇怪字符串,推测是timeout的时间设置过短,将代码做如下修改后通过
is_visible(browser, '.conList_ull')
def is_visible(browser, locator, timeout=100)
关于webdriver加载网页设置等待时间信息的资料:https://www.cnblogs.com/BigFishFly/p/6337153.html
3. Linux补充知识
运行程序的时候有时候遇到文件权限的问题,Permission denied,可以采用如下命令赋予权限:
chmod -R 777 /opt/dataframe-tools
7即代表有读、写和执行的权限。三个7:指三种不同的对象,User,Gourp,Other,即文件所有人,文件所有组,和其他人