调试phantomjs脚本的GUI

调试phantomjs脚本的GUI,phantomjs,Phantomjs,我正在使用phantomjs构建一个网络爬虫。我当前的爬虫程序是一个使用selenium的Python脚本,它需要运行Firefox浏览器。虽然Selenium很适合调试脚本(因为我可以使用firebug检查网页),但如果没有GUI,它无法部署在linux服务器上。所以我试图将我的Python脚本翻译成phantomjs 为了调试phantomjs脚本,我保存页面源html并将png屏幕截图呈现到磁盘上,然后在Firefox中打开它以检查源页面。我想知道是否有更好的方法来实现这一点,例如为pha

我正在使用phantomjs构建一个网络爬虫。我当前的爬虫程序是一个使用selenium的Python脚本,它需要运行Firefox浏览器。虽然Selenium很适合调试脚本(因为我可以使用firebug检查网页),但如果没有GUI,它无法部署在linux服务器上。所以我试图将我的Python脚本翻译成phantomjs


为了调试phantomjs脚本,我保存页面源html并将png屏幕截图呈现到磁盘上,然后在Firefox中打开它以检查源页面。我想知道是否有更好的方法来实现这一点,例如为phantomjs提供插件等。

对于大多数JS脚本,调试phantomjs脚本并不是那么简单,因为这背后没有IDE/编译器

首先,我强烈建议你读这本书


正如torazaburo所说,您最好的选择是使用远程调试:脚本可以在Web Inspector界面(如控制台)中运行:步进、步出、断点、局部变量。。。许多经典的调试器功能都可用。如果你熟悉Chrome开发工具,那也差不多。

这个小黑客使用了一个简单的技术:它抓住屏幕就像PhantomJS或CasperJS用captureBase64(“png”)看到它一样然后它将图像发布到接收服务器,接收服务器通过socket.io将图像发送到浏览器,浏览器将图像显示为内联图像

源代码可在github上获得:

我不确定PhantomJS是否有,但CasperJS有(后者为PhantomJS添加了一些额外的函数)


并且像其他人建议的那样使用远程调试

虽然不是解决Phantomjs问题的方法,但我认为Selenium与Python绑定可以非常有效地用作Linux环境中的无头刮板

您可以使用PyVirtualDisplay(Xvfb和Xephyr的Python包装器)来伪造显示。PyVirtualDisplay需要Xvfb作为依赖项。在Ubuntu上,首先安装Xvfb:

sudo apt-get install xvfb
然后从Pypi安装PyVirtualDisplay:

pip install pyvirtualdisplay
Python中带有PyVirtualDisplay的无头模式下的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()

使用远程调试。