在centos,docker中安裝HeadlessChrome


centos6中安裝chrome與chrome-driver,中間走了很多彎路,遇到很多坑,現將詳細步驟總結如下。參考博客鏈接:https://blog.csdn.net/u013849486/article/details/79466359

首先是在centos6里安裝,在網上搜了很多資料,主要分為在線安裝和離線安裝,在線安裝需要找到合適的源,但是Google官網的源非常容易導致失敗,有興趣的可以找其他的源。

可以參考這個網站,https://www.tecmint.com/install-google-chrome-on-redhat-centos-fedora-linux/

我采用的是離線安裝,首先介紹在centos上安裝

一、下載chrome,chrome-driver

可以通過下面網站下載各類機型不同版本的chrom,我用的是64.0.3282.119_x86_64.rpm

下載地址:https://www.landiannews.com/archives/36966.html

對應的chrome-driver可以通過這個網站下載,http://npm.taobao.org/mirrors/chromedriver/

二、安裝

1,安裝chrome是,一定要使用yum安裝,因為chrome需要安裝幾個依賴包,

1 yum localinstall -y 64.0.3282.119_x86_64.rpm 

2,解壓chromedriver_linux64.zip,

3,啟動chrome,一定要創建一個非root用戶執行chrome的啟動命令,猜測可能是chrome做了限制!!!

1 [lv@node105 lib]$ google-chrome &
2 [1] 5930
3 [lv@node105 lib]$ 
4 (google-chrome:5930): Gtk-WARNING **: cannot open display: 出現這個提示就說明chrome啟動了

三、調試

采用Python執行腳本比較方便,要安裝selenium。執行腳本的時候也要使用非root用戶!!

 1 首先安裝 selenium
 2 pip install selenium
 3 
 4 如果沒有pip,要安裝pip,centos7下使用yum安裝pip
 5 
 6 首先安裝epel擴展源:
 7 yum -y install epel-release
 8 
 9 更新完成之后,就可安裝pip:
10 yum -y install python-pip
11 
12 安裝完成之后清除cache:
13 yum clean all

測試腳本如下;test.py,打印出網站的title,就說明成功了: Maven Repository: Search/Browse/Explore。 如果報PATH異常,可以通過chown使非root用戶擁有chrome-driver的權限!

 1 #conding=utf-8
 2 from selenium import webdriver
 3 import time
 4 from selenium.webdriver.chrome.options import Options
 5 
 6 chrome_options = Options()
 7 chrome_options.add_argument('--headless')
 8 driver = webdriver.Chrome(chrome_options=chrome_options,executable_path='/sqy/local/lib/chromedriver')
 9 
10 driver.get("http://mvnrepository.com/")
11 time.sleep(3)
12 
13 print(driver.title)
14 
15 driver.quit()

有很多人推薦使用Xvfb,也可以但是比較復雜,需要安裝很多東西,使用Python腳本啟動chrome

 1 安裝pyvirtualdisplay
 2 pip install pyvirtualdisplay  
 3 
 4 yum install Xvfb
 5 
 6 yum install xorg-x11-fonts*
 7 
 8 yum install libXfont
 9 
10 yum install xorg-x11-server-Xvfb

 Python腳本

 1 from pyvirtualdisplay import Display
 2 
 3 from selenium import webdriver
 4 
 5 display = Display(visible=0, size=(800, 600))
 6 
 7 display.start()
 8 
 9 
10 
11 chrome_opt = webdriver.ChromeOptions()
12 
13 chrome_opt.add_argument('--headless')
14 
15 chrome_opt.add_argument('--disable-gpu')
16 
17 #chrome_opt.add_argument('--ignore-certificate-errors')
18 
19 try:
20 
21         a=webdriver.Chrome(chrome_options=chrome_opt,executable_path='/sqy/local/lib/chromedriver')
22 
23 except Exception as e:
24 
25         print(e)
26 
27         #display.stop()
28 
29 else:
30 
31         a.get("http://www.baidu.com")
32 
33         print(a.title)
34 
35         a.quit()    

我在這里都是使用了chrome-driver的絕對路徑(/sqy/local/lib/chromedriver),也可以通過配置chrome-driver的環境變量,這個大家可以自行決定!

四、拓展

docker環境安裝chrome,chrome-driver,並制作docker鏡像,編寫dockerfile

 因為安裝chrome需要使用yum安裝所以基礎鏡像最好有yum功能,不然自己安裝yum會很麻煩,從docker官方倉庫pull最新的centos6的基礎鏡像就帶有yum功能,安裝步驟和上面的一樣,同樣也要創建非root用戶啟動chrome,執行腳本的時候也要使用非root用戶!!!

在創建docker容器的時候必須注意:docker run -d --restart always --privileged --name chrom_test -v /usr:/sqy -ti cent_chrome:1.0      命令里必須有privileged,給容器的root用戶賦予絕對的root權限!  參考連接:容器權限

 最后奉獻上我自己的dockerfile,參考鏈接:dockerfile構建鏡像

 1 FROM centos:centos7
#我自己使用的是我本地的centos的基礎鏡像,大家可以改成docker官方倉庫,centos:7
2 3 #maintainer 作者 4 5 MAINTAINER sqy 6 7 #add 把包添加到容器的指定目錄,如果是tar包會自動解壓 8 9 ADD 64.0.3282.119_x86_64.rpm /usr/local/lib 10 11 ADD chromedriver /usr/local/lib 12 13 #workdir 相當於cd到這個目錄 14 15 WORKDIR /usr/local/lib 16 17 RUN yum localinstall -y 64.0.3282.119_x86_64.rpm

 

 ----------------------------------------------------若有不正之處,歡迎指正,不勝感激!!!!!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM