一、解释说明
一开始看标题,我知道你们会很懵,我当初完成的时候,我自己也很懵,主要是想在Linux环境下使用Selenium技术来完成一些工作,本来打算用docker创建一个Anaconda的容器来用Selenium技术的,但发现无法通过chrome驱动来驱动谷歌浏览器,所以我又用docker创建了一个Ubuntu容器来使用Selenium技术,至于为什么我不直接使用CentOS系统来使用,主要是原生环境的第三方库不配合自己的代码,实在是木有办法,而且也担心会干扰其它东西,所以还是在容器里搞吧。
另外作者我默认大家对于docker和shell命令都很熟,如果不懂的话,建议先看docker和shell
二、操作过程中Linux相关命令
1、前期准备(镜像、容器)
1.1 搜索Ubuntu镜像
docker search ubuntu
1.2 找到评分最高的ubuntu下载
docker pull ubuntu
1.3 查看服务器上的所有镜像
docker images
1.4镜像下载成功了,开始运行容器(路径自己配)
docker run -itd --privileged --name ubuntu -p 9201:9200 -v /宿主机路径:/ubuntu/python ubuntu /bin/bash
这里我搞了挂载,如果不挂载的话,自己的python代码在容器里都用不了。同时后续上传的文件都会放到挂载的文件夹里。
2、下载Ubuntu相关的包以及安装Python3
2.1 进入Ubuntu容器
docker exec -it ubuntu /bin/bash
2.2 更新源
apt-get update
2.3 安装apt-utils
apt-get install -y apt-utils
2.4 下载python3
apt-get install -y python3 python3-dev python3-setuptools
2.5 下载python3的pip工具
apt-get install -y python3-pip
2.6 更新pip到更新版本
pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple/
2.7 安装Ubuntu相关依赖1
apt-get install -y gcc make build-essential
2.8 安装Ubuntu相关依赖2
apt-get install -y libbz2-dev libncurses5-dev libgdbm-dev liblzma-dev sqlite3 libsqlite3-dev openssl libssl-dev tcl8.6-dev tk8.6-dev libreadline-dev zlib1g-dev curl
2.9 安装Ubuntu相关依赖3
pip3 install --upgrade setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple/
2.10 安装需要的python的第三方库(文件自己传)
python所需要的第三方库的名字都在requirements.txt里,避免第三方库的版本不匹配(另外多说一句,得先通过xftp将requirements.txt上传到服务器里挂载的地方,进入到该挂载的文件夹里,然后执行该命令,不然是不起作用的)
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
3、安装谷歌浏览器
3.1 安装wget工具
apt-get install -y wget gnupg2
3.2 参考网址
参考文档: ubuntu16.04下安装64位谷歌Chrome浏览器
3.3 将下载源加入到系统的源列表
wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/
3.4 导入谷歌软件的公钥
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
3.5 再次更新
apt-get update
3.6 执行对谷歌 Chrome 浏览器(稳定版)的安装
apt-get install google-chrome-stable
3.7 查看谷歌浏览器版本
google-chrome --version
如果出现谷歌浏览器的版本号,就证明成功了。
4、安装谷歌驱动
4.1 谷歌驱动网址(驱动自己找)
谷歌驱动链接: 谷歌驱动网址
在里面找到谷歌浏览器对应版本的驱动,选择linux版的,下载到本地,然后通过xftp上传到服务器上挂载的地方,然后修改python代码里的驱动位置,就可以测试了。
4.2 给chrome驱动执行权限
先进入到挂载的文件夹里,再给权限,不然这个文件找不到
chmod +x chromedriver
5、测试
5.1 将python代码通过xftp上传到挂载的文件夹里
5.2 给python文件执行权限(代码自己传)
先进入到挂载的文件夹里,再给权限,不然这个文件找不到
chmod u+x test.py
5.3 正式测试代码
先进入到存放test.py的挂载文件夹里,再执行命令,不然不起作用,同时得创建个log.log的日志文件
nohup python3 -u test.py > log.log 2>&1 &
这个shell命令大致意思是:后台执行python代码,并将日志存储到log.log里,及时输出。(可以在网上搜,都有的)文章来源:https://www.toymoban.com/news/detail-435290.html
6、测试代码
#!/usr/bin/python3
#coding:utf-8
# 浏览器
from selenium import webdriver
# 规避检测
from selenium.webdriver import ChromeOptions
# 无头浏览器
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
ch_options = webdriver.ChromeOptions()
#为Chrome配置无头模式
ch_options.add_argument("--headless")
ch_options.add_argument('--no-sandbox')
ch_options.add_argument('--disable-gpu')
ch_options.add_argument('--disable-dev-shm-usage')
# 在启动浏览器时加入配置,这个驱动路径是容器里对应的路径,不是宿主机的路径
dr = webdriver.Chrome(service=Service("/ubuntu/python/chromedriver"),options=ch_options)
#这是测试网站
url = "https://www.baidu.com"
dr.get(url)
#打印源码
print(dr.page_source)
三、题外话
我这些步骤一步步来,该提醒的位置都提醒了,其它直接执行,应该就能成功了。然后尝试在ubuntu20.04上配置了一下,也没有太大问题,因为我也是最近遇到这个问题才做的,繁琐是很繁琐,但有用,不保证对于每个人都有用,但如果出现问题可以及时反馈,一起努力共同进步啊。文章来源地址https://www.toymoban.com/news/detail-435290.html
到了这里,关于Selenium技术在CentOS6.8系统的腾讯云服务器上的docker镜像的Ubuntu容器里的相关使用(Linux环境下)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!