1. 程式人生 > >使用selenium+谷歌瀏覽器在centeos7無GUI部署爬蟲cookie更新

使用selenium+谷歌瀏覽器在centeos7無GUI部署爬蟲cookie更新

highlight 防止 為我 tab info mys 關於 配置 root

環境安裝

python3 安裝selenium  

pip3 install selenium

安裝chrome瀏覽器+chromedriver驅動

一.配置yum源

1.在目錄 /etc/yum.repos.d/ 下新建文件 google-chrome.repo

        

vi /etc/yum.repos.d/google-chrome.repo

2.寫入如下代碼:

[google-chrome] 
name=google-chrome 
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch 
enabled
=1 gpgcheck=1 gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

  使用vi在命令行編輯:(詳細參考https://blog.csdn.net/u013142781/article/details/50735470)

  按下a鍵使用insert功能來添加修改文件

  修改完成後按下ESC鍵進入末行模式 然後輸入 :q保存  :wq保存退出

二.安裝google chrome瀏覽器

yum update     #更新yum源
yum -y install google-chrome-stable    #
安裝

Google官方源可能在中國無法使用,導致安裝失敗或者在國內無法更新,可以添加以下參數來安裝:

yum -y install google-chrome-stable --nogpgcheck

三.添加軟連接

註意:源文件刪除後軟連接無法使用  ls查看

which google-chrome-stable   #尋找chrome路徑
ln -s 路徑 /bin/chrome         #查詢到的路徑 添加軟連接

四.下載chromedriver驅動

https://chromedriver.storage.googleapis.com/index.html?

下載對應版本的驅動(兩個都下載最新的應該沒問題),對應表參考:(版本不兼容會出現下面類似的報錯)



ChromeDriver v2.43 (2018-10-16)----------Supports Chrome v69-71
ChromeDriver v2.42 (2018-09-13)----------Supports Chrome v68-70
ChromeDriver v2.41 (2018-07-27)----------Supports Chrome v67-69
ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68
ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68
ChromeDriver v2.38 (2018-04-17)----------Supports Chrome v65-67
ChromeDriver v2.37 (2018-03-16)----------Supports Chrome v64-66
ChromeDriver v2.36 (2018-03-02)----------Supports Chrome v63-65
ChromeDriver v2.35 (2018-01-10)----------Supports Chrome v62-64
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: call function result missing value
 
  (Session info: chrome=65.0.3325.31)
  (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 6.1.7601 SP1 x86) 
(WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds

使用xftp復制下載好的文件到服務器執行如下代碼:

chmod +x chromedriver #增加可執行權限

#移動文件到該路徑
sudo mv -f chromedriver /usr/local/share/chromedriver 
#添加軟連接(鏈接存在會報錯,直接跳過即可)
sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver 
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

註意:

  對於root用戶不能運行chrome

  編輯啟動文件: /opt/google/chrome/google-chrome 將最後一行改寫為: exec -a "$0" "$HERE/chrome" "$@" --no-sandbox $HOME

因為我這裏用的是無界面顯示,所以就不裝Xvfb,pyvirtualdisplay了

到這裏環境安裝完畢

下面附上獲取網站cookie的代碼(模擬登陸什麽的自己研究吧,我這裏就給個獲取cookie的示例)

#centeos 攜程cookie更新

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options
import pymysql



options = webdriver.ChromeOptions()
options.add_argument(--headless)#無界面
driver = webdriver.Chrome(executable_path="chromedriver",chrome_options=options)
url = "https://www.ly.com/iflight/flight-book1.aspx?para=0*SHA*MLE*2019-10-10**YSCF*1*0*1&advanced=false&orgAirCode=false&desAirCode=false"
wait = WebDriverWait(driver,10)#10s等待響應
try:   #發生錯誤結束瀏覽器,防止占用資源,導致服務器崩潰(也可以在程序開頭添加os模塊檢測chrome進程,每次運行先殺死)
    driver.get(url)

    message = driver.get_cookies() #獲取當前頁面的cookie
    l = ""
    for i in message:
        name = i["name"] + = + i["value"] + ;
        l = l + name
    print(l)
    driver.quit()
except:
    driver.quit()

添加linux定時任務定時更新cookie:

 

crontab -e  #編輯定時任務
crontab -l   #查看定時任務
#下面給出幾個例子
#每天淩晨30分更新
30 0 * * * python3 /root/global_spider2/global_cn/all_global.py 
#每3個小時更新
* */3 * * * python3 /root//國內外機票cookie更新/domestic_cookie.py
#每2個小時更新一次 
* */2 * * * python3 /root/國內外機票cookie更新/china_ctrip.py

更多有關於定時任務的操作  https://www.cnblogs.com/zoulongbin/p/6187238.html

使用selenium+谷歌瀏覽器在centeos7無GUI部署爬蟲cookie更新