1. 程式人生 > >centos 無界面 服務器 安裝chrome部署chromedriver

centos 無界面 服務器 安裝chrome部署chromedriver

其他 經驗 linu x86 less 嘗試 top post err

轉:https://blog.csdn.net/u013849486/article/details/79466359

基本 做完了,要弄進docker裏面去了的時候,才搜到 docker-chromium 基礎鏡像,和前輩走過的路,也許這樣更方便吧,而且生產環境 就是linux-centos所以 不如一直在Linux或者docker裏開發,我一直在mac裏開發,所以邁過了很多坑~

http://blog.csdn.net/littlebrain4solving/article/details/77102084可以參考吧~。。。

說在頭裏,的確比post 模擬,省很多事,也會慢很多,但最麻煩的,就是 都是坑,沒人踩過的坑。

在弄項目過程中,大概做了2個月吧,代碼量根本不多,500行python,就是卡在了無數的坑中。

最難忘的一個坑就是,我在mac開發,類Linux,結果測試放到centos生產環境,一系列崩塌~~

所以一定要有無盡崩潰的準備,再繼續讀下去~

一個重大坑就是 ,ssl驗證,沒弄太清楚,反正 Linux centos無界面訪問 一個https的url失敗了,返回了空白頁面

類似<html><body></body></html>,stackoverflow 搜到了類似結果,但是是phantomjs的所以改用phantomjs,

可行,參考:

https://stackoverflow.com/questions/29463603/phantomjs-returning-empty-web-page-python-selenium/36159299#36159299

重點就在於

driver = webdriver.PhantomJS(service_args=[‘--ignore-ssl-errors=true‘, ‘--ssl-protocol=TLSv1‘])
這個ignore 起了作用,我盡力搜索,以及嘗試在chrome 裏這樣操作,失敗了~
網上有很多經驗,這裏呢根據我的實際情況,算是總結,算給大家提供借鑒了。

服務器

uname -a

Linux VM_171_246_centos 3.10.0-327.36.3.el7.x86_64 #1 SMP Mon Oct 24 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

業務情況是 python + selenium + chromedriver

python和selenium的安裝啊部署都不介紹了,網上有其他總結,新手來說也算挺多事,但也算有很多經驗,就不在這裏說了。

因為簡單的模擬post請求,既復雜又可能無法達到預計目標,甚至僅僅作為初期項目模型的構建而臨時采用,selenium的引入就要選擇實際的瀏覽器,我推薦chrome因為沒,沒過別的,經力時間有限,有留言說其他的不好。

首先要安裝chrome,http://blog.csdn.net/xds2ml/article/details/52982748

我是看這位朋友的弄的,只看1,2點裝好就行了,而且第1點中要記得換行應該是這樣的,應該是,朋友上傳後被排版弄亂了。

[google]
name=Google-x86_64
baseurl=http://dl.google.com/linux/rpm/stable/x86_64
enabled=1
gpgcheck=0
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
第二點的yum update可以不弄,我是沒弄,yum不太懂,朋友們可以拓展。

然後是chromedriver的部署,首先要搞清chrome和其driver的對應關系,我用的是chrome-v64和driver2.3.5

對應關系在這位朋友這,http://blog.csdn.net/cz9025/article/details/70160273。

對應下載在這,記得看清更新日期,2.9比2.3.5要舊,我寫這篇博客時最新的是2.3.6。

http://npm.taobao.org/mirrors/chromedriver/

然後就是將driver放在linux某個地方 zip格式就unzip,得到運行文件就記下路徑(pwd)

部署就算ok了,然後是如何無界面使用。

一般推薦是Xvfb,但是都有點舊了可能,也聽說這樣是可以的,所以我嘗試了chrome簡單的參數配置,是可以的。

關鍵點就是 記得給server配一個其他用戶,root用戶啟動會失敗。不知為啥,其他用戶是可以的。


#from pyvirtualdisplay import Display

from selenium import webdriver

#display = Display(visible=0, size=(800, 600))

#display.start()

chrome_opt = webdriver.ChromeOptions()

chrome_opt.add_argument(‘--headless‘)

chrome_opt.add_argument(‘--disable-gpu‘)

#chrome_opt.add_argument(‘--ignore-certificate-errors‘)

try:

a=webdriver.Chrome(chrome_options=chrome_opt,executable_path=‘/usr/bin/google-chrome/chromedriver‘)

except Exception as e:

print(e)

#display.stop()

else:

a.get("http://www.baidu.com")

print(a.title)

a.quit()

#display.stop()

python test.py

輸出

centos 無界面 服務器 安裝chrome部署chromedriver