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