虽然不能解决您的 Phantomjs 问题,但我认为 Selenium 与 Python 绑定可以非常有效地用作 Linux 环境中的无头抓取工具。
您可以使用 PyVirtualDisplay,一个用于 Xvfb 和 Xephyr 的 Python 包装器来伪造显示。PyVirtualDisplay 需要 Xvfb 作为依赖项。在 Ubuntu 上,首先安装 Xvfb:
sudo apt-get install xvfb
然后从 Pypi 安装 PyVirtualDisplay:
pip install pyvirtualdisplay
使用 PyVirtualDisplay 以无头模式在 Python 中使用 Selenium 脚本示例:
#!/usr/bin/env python
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()