一、解釋說明
一開始看標題,我知道你們會很懵,我當初完成的時候,我自己也很懵,主要是想在Linux環(huán)境下使用Selenium技術來完成一些工作,本來打算用docker創(chuàng)建一個Anaconda的容器來用Selenium技術的,但發(fā)現(xiàn)無法通過chrome驅動來驅動谷歌瀏覽器,所以我又用docker創(chuàng)建了一個Ubuntu容器來使用Selenium技術,至于為什么我不直接使用CentOS系統(tǒng)來使用,主要是原生環(huán)境的第三方庫不配合自己的代碼,實在是木有辦法,而且也擔心會干擾其它東西,所以還是在容器里搞吧。
另外作者我默認大家對于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代碼在容器里都用不了。同時后續(xù)上傳的文件都會放到掛載的文件夾里。
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上傳到服務器里掛載的地方,進入到該掛載的文件夾里,然后執(zhí)行該命令,不然是不起作用的)
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 將下載源加入到系統(tǒng)的源列表
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 執(zhí)行對谷歌 Chrome 瀏覽器(穩(wěn)定版)的安裝
apt-get install google-chrome-stable
3.7 查看谷歌瀏覽器版本
google-chrome --version
如果出現(xiàn)谷歌瀏覽器的版本號,就證明成功了。
4、安裝谷歌驅動
4.1 谷歌驅動網址(驅動自己找)
谷歌驅動鏈接: 谷歌驅動網址
在里面找到谷歌瀏覽器對應版本的驅動,選擇linux版的,下載到本地,然后通過xftp上傳到服務器上掛載的地方,然后修改python代碼里的驅動位置,就可以測試了。
4.2 給chrome驅動執(zhí)行權限
先進入到掛載的文件夾里,再給權限,不然這個文件找不到
chmod +x chromedriver
5、測試
5.1 將python代碼通過xftp上傳到掛載的文件夾里
5.2 給python文件執(zhí)行權限(代碼自己傳)
先進入到掛載的文件夾里,再給權限,不然這個文件找不到
chmod u+x test.py
5.3 正式測試代碼
先進入到存放test.py的掛載文件夾里,再執(zhí)行命令,不然不起作用,同時得創(chuàng)建個log.log的日志文件
nohup python3 -u test.py > log.log 2>&1 &
這個shell命令大致意思是:后臺執(zhí)行python代碼,并將日志存儲到log.log里,及時輸出。(可以在網上搜,都有的)文章來源:http://www.zghlxwxcb.cn/news/detail-435290.html
6、測試代碼
#!/usr/bin/python3
#coding:utf-8
# 瀏覽器
from selenium import webdriver
# 規(guī)避檢測
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)
三、題外話
我這些步驟一步步來,該提醒的位置都提醒了,其它直接執(zhí)行,應該就能成功了。然后嘗試在ubuntu20.04上配置了一下,也沒有太大問題,因為我也是最近遇到這個問題才做的,繁瑣是很繁瑣,但有用,不保證對于每個人都有用,但如果出現(xiàn)問題可以及時反饋,一起努力共同進步啊。文章來源地址http://www.zghlxwxcb.cn/news/detail-435290.html
到了這里,關于Selenium技術在CentOS6.8系統(tǒng)的騰訊云服務器上的docker鏡像的Ubuntu容器里的相關使用(Linux環(huán)境下)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!