selenium + phantomjs常見錯誤:QXcbConnection、Unable to load Atom 'find_element'、Bad file descriptor

使用python做爬蟲的時候,難免會碰到一些必須使用瀏覽器進行模擬的情況,這裏總結一下在python下使用selenium調用phantomjs時,一些常見的坑。以下的一切建立在類ubuntu系統上,其他系統上不清楚,僅供參考。

QXcbConnection

安裝好Phantomjs後,在命令行裏運行一下,發現報錯了,閱讀報錯信息大概是環境出了問題,可以通過如下方法解決。

使用vim或者gedit,在/usr/bin/phantomjs中引入相關的環境變量:

export QT_QPA_PLATFORM=offscreen
export QT_QPA_FONTDIR=/usr/share/fonts

Unable to load Atom ‘find_element’

出現這個問題,一般是phantomjs安裝不完整導致的。比如使用apt-get 安裝的phantomjs一般都不完整= =

可以使用如下方法解決:

sudo apt-get install nodejs  
sudo apt-get install nodejs-legacy  
sudo apt-get install npm  
sudo npm -g install phantomjs-prebuilt  

Bad file descriptor

有時候,在python代碼中,使用driver.quit()方法關閉瀏覽器時,可能會報Bad file descriptor錯誤,導致退出失敗,以致於一段時間後,後臺多了很多丟失了句柄的phantomjs進程。

可以這樣修改代碼來解決問題:

import signal

# 先殺死對應的子進程
driver.service.process.send_signal(signal.SIGTERM)
# 再退出
driver.quit()  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章