我正在使用phantomjs来构建一个网络爬虫。我目前使用的爬虫是一个使用selenium的Python脚本,它需要一个正在运行的Firefox浏览器。虽然Selenium非常适合于调试脚本(因为我可以使用firebug来检查网页),但是如果没有GUI,它就不能部署到linux服务器上。因此,我正在尝试将我的Python脚本转换为phantomjs。
为了调试phantomjs脚本,我将页面源代码html保存到磁盘并呈现png屏幕截图,然后在Firefox中打开它以检查源页面。我想知道是否有更好的方法来做到这一点,例如phantomjs的插件,等等。
发布于 2014-04-30 21:49:51
这个小技巧使用了一种简单的技术:它用captureBase64(Png)抓取PhantomJS或CasperJS看到的屏幕,然后将图像POSTing到接收服务器,然后通过socket.io将其发送到浏览器,浏览器将其显示为内联图像。
源代码可以在github上找到:
https://github.com/maciejjankowski/flaming-octo-puss
我不确定PhantomJS是否有这个功能,但CasperJS有(后者向PhantomJS添加了一些额外的功能)
并按照其他人的建议使用远程调试。
发布于 2013-08-13 15:30:25
对于大多数JS脚本,调试phantomjs脚本并不是那么简单,因为后面没有IDE/编译器。
首先,我强烈建议您阅读Troubleshooting section。
正如torazaburo所说,您最好的选择是使用远程调试:脚本可以在类似Web Inspector界面的控制台中运行:步进、步出、断点、局部变量……有许多经典的调试器特性可用。如果你熟悉Chrome开发者的工具,它也是一样的。
发布于 2014-10-10 15:51:49
虽然不是Phantomjs问题的解决方案,但我认为使用Python绑定的Selenium在Linux环境中可以非常有效地用作无头刮刀。
您可以使用Xvfb的Python包装器PyVirtualDisplay和Xephyr来伪造display.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()https://stackoverflow.com/questions/17965669
复制相似问题