如何解決Python selenium在遠程shell下無法連接瀏覽器的問題?

Ubuntu16+Python2.7,代碼如下:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.163.com/")
print browser.title
browser.close()

在圖形界面下運行正常,用ssh遠程連接的時候就報如下錯誤:

Traceback (most recent call last):
File "spider.py", line 25, in &
browser = webdriver.Firefox()
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 145, in __init__
keep_alive=True)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 179, in start_session
response = self.execute(Command.NEW_SESSION, capabilities)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: connection refused

python - selenium.common.exceptions.WebDriverException: Message: connection refused
Google上查到上面這個鏈接,一樣的問題但是並沒有回答~有大神了解么,摯謝。


首先

sudo apt-get install xvfb
sudo pip install pyvirtualdisplay

然後代碼修改為:

from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(1024, 768))
display.start()
browser = webdriver.Firefox()
browser.get("http://www.ubuntu.com/")
print browser.page_source
browser.close()
display.stop()


剛好最近折騰了,嘗試以下幾個方案:

』1.使用phantomJS這種無界面的瀏覽器

2.使用virtualDisplay,如@當年少輕狂 所說

3.在圖形界面中建立一個screen的session,然後ssh遠程過去在該session中跑,瀏覽器會在該圖形界面的屏幕顯示。


推薦閱讀:

如何在 python 中使用 beautifulsoup4 來抓取標籤中的內容?
按鍵精靈等以GUI介面為基礎的程序在爬蟲界的地位是怎樣的?
用 Scrapy 爬蟲怎麼解決動態網頁的問題?
scrapy的request的meta參數是什麼意思?
用python寫爬蟲時用自帶的urllib好還是用request庫好,還是兩個都要學?

TAG:Python | Selenium | 爬蟲計算機網路 |