使用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()