Ubuntu下的Selenium爬蟲的配置


  在服務器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版本不匹配導致的,仔細檢查一下。


免責聲明!

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



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