1. 程式人生 > >Ubuntu下的Selenium爬蟲的配置

Ubuntu下的Selenium爬蟲的配置

wget 另一個 嘻嘻 user pytho 多個 lin 兩種 tab

  在服務器Ubuntu系統上跑爬蟲,爬蟲是基於Selenium寫的,遇到好幾個問題,現在這裏記錄一下。

1. 安裝環境

  阿裏雲,Ubuntu16.04,因為沒有界面,所以遠程命令行操作。爬蟲是基於Selenium寫的,需要安裝Chrome瀏覽器和Chromedriver。

  1.1安裝Chrome和Chromedriver

    Chrome直接去官網下載,安裝穩定版,https://www.ubuntuupdates.org/ppa/google_chrome?dist=stable,下載deb格式的安裝包,上傳到服務器,用命令行安裝:

    1 sudo dpkg -i google-chrome*.deb
    
2 sudo apt-get install -f

    安裝完成使用命令查看Chrome的版本,若出現版本號說明安裝成功。

    1 google-chrome --version

    Chromedriver去淘寶鏡像下載,http://npm.taobao.org/mirrors/chromedriver/,下載時選擇與Chrome版本對應的Chromedriver,點開裏面的notes.txt可以看到對應關系。下載後上傳到服務器,或者 wget -N鏈接下載。下載後解壓,若沒有安裝解壓軟件,使用下面的命令安裝。

    1 sudo apt-get install unzip

    將解壓後的文件移動到/usr/bin/文件下,添加執行權限。

    1 sudo mv chromedriver /usr/bin/
    2 sudo chmod +x /usr/bin/chromedriver

  1.2 安裝Anaconda3

    去清華源下載Anaconda3,https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/,下載後上傳到服務器,使用命令安裝,此處要註意把Anaconda安裝為Linux下多用戶共享的軟件,避免多個用戶重復安裝。

    1 sudo bash Anaconda3-5.2.0-Linux-x86_64.sh

    安裝時有一個步驟是要求你輸入安裝路徑,Linux下多用戶共享的軟件是在/usr/local目錄下,所以填寫這個目錄。安裝最後會提示問你要不要把Anaconda添加到系統路徑,選Yes,然後更新root用戶的設置(這樣做還會避免另一個大坑,下面會講到)。關閉窗口後生效。

    1 sudo source ~/.bashrc

    若已經為root用戶安裝了Anaconda,建議卸載後重新安裝。卸載方法是刪除原來的/usr/local/bin下Anaconda的安裝目錄,編輯root用戶的設置文件:

    1 sudo vim ~/.bashrc

    把裏面原來添加的Anaconda路徑設置刪除,然後更新一下設置。

    1 sudo source ~/.bashrc

    在命令行裏輸入python,出現的python版本是3.6而不是系統自帶的2.7或3.5,說明安裝成功。

1.3 安裝Selenium

    在root用戶下安裝:

    1 pip install selenium

    打開python,輸入以下代碼,不報錯說明安裝成功。

    1 from selenium import webdriver

    安裝到這裏就能跑代碼了嘛?不,還不行,哈哈哈。

2. 修改配置來執行代碼

    Selenium跑不起來,報錯。就不截圖了,只是說不能正常啟動。經過我的搜索,有兩個問題會導致這個錯誤:

    selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally (Driver info: chromedriver=........

    1. 當前執行代碼的用戶是root用戶,而root用戶打開Chrome需要在沙盒裏運行,webdriver裏默認關閉了沙盒,所以報錯。兩種解決方法,為Ubuntu添加一個新用戶或者修改代碼裏的設置。我只實驗了第一種,添加了一個新用戶,第二種沒試。因為root用戶只用來管理,新用戶用來跑代碼,分開不容易出錯。

    Ubuntu裏添加新用戶的方法是在root用戶下執行:

    1 sudo adduser username

    會讓你設置密碼。companyname,phone之類的直接enter跳過就行。

    2. 沒有界面,所以裝一個虛擬界面才行。

    在root用戶下安裝pyvirtualdisplay:

    1 pip install pyvirtualdisplay

    然後在代碼裏添加以下幾行,進行測試:

    1 from selenium import webdriver
    2 from pyvirtualdisplay import Display
    3  
    4 if __name__ == __main__:
    5     display = Display(visible=0, size=(800, 800))
    6     display.start()
    7     browser = webdriver.Chrome()
    8     browser.get(http://www.baidu.com)
    9     print (browser.title)

    大功告成。第一篇博客,嘻嘻。 如果還有問題那就是第一步安裝的Chrome和Chromedriver版本不匹配導致的,仔細檢查一下。

Ubuntu下的Selenium爬蟲的配置