自動獲取信息免不了使用Selenium,畢竟直接用chrome訪問兼容性最好,MAC下的Selenium好弄,但是在云服務器上花了一兩天時間,碰到好多意外情況,值得記錄一下。

一、基礎環(huán)境信息
騰訊云服務器,因為申請的較早,使用了CentOS7.6,4核8G。
Python 3.6.8,Selenium 3.141.0。
Python的安裝很簡單,就不再贅述,Selenium直接用pip3安裝即可。
二、具體步驟
1、Linux上安裝Chrome瀏覽器
這是最坑的一個步驟,花的時間最長。
最初肯定是去下載穩(wěn)定版本,于是使用wget下了一個126.0.6478.182版本。
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
結果使用yum或rpm安裝chrome時提示,需要lib.so.6(GLIBC_2.25)(64bit)。

雖然提示可以用–skip-broken去跳過問題,但使用后無濟于事,仍然報錯,于是開始百度glibc庫的升級,愕然發(fā)現(xiàn)也是一個大工程,簡單來說就是2.25貌似不太穩(wěn)定,建議直接到2.31,于是繼續(xù)按步驟操作。
(1)下載glibc版本,檢查升級前依賴
wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.31.tar.gz
tar -xzvf glibc-2.31.tar.gz
cd glibc-2.31
cat INSTALL | grep -E "newer|later" | grep "*"
# 輸出如下
* GNU 'make' 4.0 or newer
* GCC 6.2 or newer
* GNU 'binutils' 2.25 or later
* GNU 'texinfo' 4.7 or later
* GNU 'bison' 2.7 or later
* GNU 'sed' 3.02 or newer
* Python 3.4 or later
* GDB 7.8 or later with support for Python 2.7/3.4 or later
* GNU 'gettext' 0.10.36 or later
檢查了一下,發(fā)現(xiàn)在CentOS7.6版本中,make為3.82,gcc為4.x,gdb為7.6,需要升級。
(2)依賴包升級
首先是make
wget https://mirrors.aliyun.com/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz
cd make-4.3
mkdir build
cd build
../configure --prefix=/opt/make # 安裝到/opt目錄下
make && make install
ln -sf /opt/make/bin/make /usr/bin/make
# 最終驗證make版本,應為4.3
make --version
然后是gcc
wget https://ftp.gnu.org/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz --no-check-certificate
tar -xzvf gcc-9.3.0.tar.gz
cd gcc-9.3.0
# 去gnu網(wǎng)站下載4個依賴包,這里花了不少時間,可能是網(wǎng)絡帶寬問題
./contrib/download_prerequisites
mkdir build
cd build
../configure --enable-checking=release --enable-language=c,c++ --disable-multilib --prefix=/usr
make -j4 # 使用4個核心,把服務器資源用足
make install
# 最終驗證gcc版本,應為9.3.0
gcc -v
最后是gdb。
wget http://ftp.gnu.org/gnu/gdb/gdb-7.8.tar.gz
tar -xzvf gdb-7.8.tar.gz
cd gdb-7.8
mkdir build
cd build
../configure --prefix=/usr
make
make install
# 此處會提示錯誤——configure: error: no termcap library found
## 先安裝termcap
wget https://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
tar -xzvf termcap-1.3.1.tar.gz
cd termcap-1.3.1
mkdir build
cd build
configure
make
make install
# 然后回到gdb的build目錄下重新執(zhí)行編譯
cd gdb-7.8/build
make
make install
# 最終驗證gdb版本,應為7.8
gdb -v
(3)glibc升級
cd glibc-2.31
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks --disable-werror
make -j4
make install
make localedata/install-locales # 解決新啟動遠程終端報警提示問題,這一步的時間最長
# 最終驗證glibc版本
strings /lib64/libc.so.6 | grep -E "^GLIBC" | sort -V -r | uniq
# 以下為驗證命令輸出
GLIBC_PRIVATE
GLIBC_2.30
GLIBC_2.29
GLIBC_2.28
GLIBC_2.27
GLIBC_2.26
GLIBC_2.25
GLIBC_2.24
GLIBC_2.23
GLIBC_2.22
GLIBC_2.18
GLIBC_2.17
GLIBC_2.16
GLIBC_2.15
GLIBC_2.14
GLIBC_2.13
GLIBC_2.12
GLIBC_2.11
GLIBC_2.10
GLIBC_2.9
GLIBC_2.8
GLIBC_2.7
GLIBC_2.6
GLIBC_2.5
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.3.3
GLIBC_2.3.2
GLIBC_2.3
GLIBC_2.2.6
GLIBC_2.2.5
注意的是升級最終是以一個錯誤提示結束顯示,一開始嚇了一跳,以為沒成功。

(4)安裝Chrome
花費了大半天搞定glibc,結果安裝chrome出現(xiàn)同樣的提示,繼續(xù)百度+大模型搜索,找到一篇文章說CentOS7無法安裝126版本,貌似7.9和7.6版本都不行,只能使用124的版本。
wget http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/google-chrome-stable-124.0.6367.118-1.x86_64.rpm
yum install google-chrome-stable-124.0.6367.118-1.x86_64.rpm
# 最終驗證chrome版本,應為124.0.6367.118
google-chrome --version
2、安裝Chrome WebDriver
要安裝與chrome版本對應的webdriver,可以去
https://getwebdriver.com/chromedriver,頁面上能看到的都是最新穩(wěn)定版、Beta版、研發(fā)版或實驗性版本(Canary),即126版本及更新的,要找之前的版本可以使用JSON API的結果,點擊下圖中的鏈接:

會列出所有版本的相關信息,找到124對應的版本號,發(fā)現(xiàn)有好多個。

可以選擇與chrom的小版本號118相近的,如91、155、201等,試驗了一下,發(fā)現(xiàn)這幾個版本都可以使用,當然,大版本號不同是無法使用的,126的chromedriver啟動就會提示版本信息不匹配。
wget https://storage.googleapis.com/chrome-for-testing-public/124.0.6367.201/linux64/chromedriver-linux64.zip
unzip chromedriver-linux64.zip
cd chromedriver-linux64
cp chromedriver /usr/local/bin
# 最終驗證chromedriver版本,應為124.0.6367.<小版本號>
chromedriver --version
3、腳本驗證
在腳本驗證環(huán)節(jié)也出了一些小狀況,因為在mac上用了比較熟,結果因為環(huán)境不同,相同的無頭(headless)腳本在linux下就是不能用,后來發(fā)現(xiàn),需要使用無沙箱模式啟動才可以。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
browser = webdriver.Chrome(options = options)
// 使用browser去瀏覽,使用等
browser.quit()
版權聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內容, 請發(fā)送郵件至2705686032@qq.com 舉報,一經(jīng)查實,本站將立刻刪除。原文轉載: 原文出處: