前言:自己想使用該技術(shù)實(shí)現(xiàn)自動(dòng)化抓取音樂(lè),目前在window上運(yùn)行成功,需要在Linux Centos服務(wù)上跑,配置上出現(xiàn)了許多問(wèn)題,特此記錄。
參考文檔:CentOS7 安裝Selenium+chrome+chromedriver+java_遠(yuǎn)方丿的博客-CSDN博客?
一、環(huán)境
CentOS 7.6
java (jdk1.8)
Selesium 4.11.0
google-chrome 115
chrome-driver 115
二、 整體邏輯
我們明確的是,在window上是安裝了chrome和自帶了chromeDriver的,之所以能自動(dòng)化啟動(dòng)chrome是因?yàn)槲覀兪褂肅homeDriver,設(shè)置了一些參數(shù)來(lái)啟動(dòng)的。
1. 安裝google-chrome
2. 安裝chromeDriver
3. 安裝XVFB主要是用來(lái)虛擬一個(gè)界面,以此讓chrome在CentOS下啟動(dòng)
三、 安裝chromeDriver
去官網(wǎng)查看版本下載 ChromeDriver - WebDriver for Chrome - Downloads
主要是google-chrome 和 chromeDriver要進(jìn)行版本對(duì)應(yīng),不然會(huì)報(bào)錯(cuò)。
//下載安裝包
wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/115.0.5790.170/linux64/chromedriver-linux64.zip
//解壓:
unzip chromedriver_linux64.zip
//然后將解壓的chromedriver移動(dòng)到 /usr/bin目錄下:
mv chromedriver /usr/bin/
//給與執(zhí)行權(quán)限:
chmod +x /usr/bin/chromedriver
//檢查chromedriver版本:
chromedriver -version
//如果有安裝錯(cuò)了,可以清除chromedriver
sudo rm -f /usr/bin/chromedriver
四、安裝google-chrome
1. 安裝chrome,目前wget下載的連接地址,只能是當(dāng)前谷歌最新版本,我也沒(méi)找到如何指定版本。
//下載chrome(后綴名rpm就是Centos下的安裝包后綴,ded是烏班圖的安裝包后綴)
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
//安裝 chrome必須要的依賴庫(kù)
yum install mesa-libOSMesa-devel gnu-free-sans-fonts wqy-zenhei-fonts
//安裝chrome
rpm -ivh google-chrome-stable_current_x86_64.rpm
//啟動(dòng)chrome
google-chrome
2. 刪除google-chrome(因?yàn)橛袝r(shí)可能安裝版本錯(cuò)誤,要進(jìn)行刪除操作)
#殺掉谷歌進(jìn)程
ps -ef | grep chrome | grep -v grep | awk '{print "kill -9 "$2}'|sh
# 卸載chrome
yum remove google-chrome-stable.x86_64 -y
3. 查看chrome是否安裝成功
chrome -version
?
4. 運(yùn)行chrome
#運(yùn)行chrome命令
google-chrome
但又報(bào)錯(cuò)
//報(bào)錯(cuò)信息
Missing X server or $DISPLAY
The platform failed to initialize. ?Exiting.?
NaCl helper process running without a sandbox!
Most likely you need to configure your SUID sandbox correctly
?缺少X服務(wù)器或$DISPLAY
平臺(tái)初始化失敗。正在退出。
NaCl輔助進(jìn)程在沒(méi)有沙箱的情況下運(yùn)行!
很可能您需要正確配置SUID沙箱
//修改啟動(dòng)命令
google-chrome --no-sandbox?
總是這樣手動(dòng)添加 --no-sandbox也不方便,進(jìn)入 /opt/chrome/google-chrome修改配置
#exec -a "$0" "$HERE/chrome" "$@"
exec -a "$0" "$HERE/chrome" "$@" --no-sandbox
上面的錯(cuò)誤就是Centos 7.6下本身無(wú)界面,無(wú)法像window上啟動(dòng)chrome,所以此時(shí)我們要安裝XVFB來(lái)虛擬一個(gè)界面,讓其能打開(kāi)chrome。下面就是安裝XVFB。
五、?XVFB
?XVFB是一個(gè)X服務(wù)器,可以在沒(méi)有顯示硬件和物理輸入設(shè)備的機(jī)器上運(yùn)行。也就是能在Centos上虛擬一個(gè)界面讓google-chrome瀏覽器運(yùn)行。
//全局安裝Xvfb
yum install Xvfb -y
//安裝Xvfb相關(guān)的依賴
yum install xorg-x11-fonts* -y
在/usr/bin/? 新建一個(gè)名叫 xvfb-chrom 的文件寫入以下內(nèi)容:
#!/bin/bash
_kill_procs() {
kill -TERM $chrome
wait $chrome
kill -TERM $xvfb
}
# Setup a trap to catch SIGTERM and relay it to child processes
trap _kill_procs SIGTERM
XVFB_WHD=${XVFB_WHD:-1280x720x16}
# Start Xvfb
Xvfb :99 -ac -screen 0 $XVFB_WHD -nolisten tcp &
xvfb=$!
export DISPLAY=:99
chrome --no-sandbox --disable-gpu$@ &
chrome=$!
wait $chrome
wait $xvfb
添加執(zhí)行權(quán)限
?chmod +x /usr/bin/xvfb-chrome
查看當(dāng)前映射關(guān)系
ll /usr/bin/ | grep chrome?
更改Chrome啟動(dòng)的軟連接?
/* 下面的操作主要就是讓xvfb-chrome成為運(yùn)行的主體,這樣chrome在xvfb下就可以運(yùn)行 */
// 創(chuàng)建一個(gè)軟連接
ln -s /etc/alternatives/google-chrome /usr/bin/chrome
//刪除google-chrome
rm -rf /usr/bin/google-chrome
//創(chuàng)建一個(gè)軟連接
ln -s /usr/bin/xvfb-chrome /usr/bin/google-chrome
查看修改后的映射關(guān)系
ll /usr/bin/ | grep chrom
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-672818.html
下面是案例:注意代碼執(zhí)行順序文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-672818.html
public void test(){
//1. 準(zhǔn)備Chrome的配置參數(shù)
ChromeOptions options = new ChromeOptions();
options.addArguments("headless"); //無(wú)界面參數(shù)
options.addArguments("no-sandbox"); //禁用沙盒
//2. 創(chuàng)建chromeDriver驅(qū)動(dòng),設(shè)置參數(shù)
WebDriver driver = new ChromeDriver(options);
//3. 在瀏覽器上執(zhí)行操作 ,導(dǎo)航到一個(gè)網(wǎng)址
driver.get("https://www.baidu.com/");
//4. 請(qǐng)求瀏覽器的信息
String title = driver.getTitle();
System.out.println("瀏覽器的信息==="+title);
//5. 關(guān)閉瀏覽器
driver.quit();
}
到了這里,關(guān)于CentOS7 啟動(dòng)谷歌瀏覽器 java+Selenium+chrome+chromedriver的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!