我正在使用 python 创建网站的“收藏夹”部分。我想做的一部分是抓取一张图像放在他们的链接旁边。因此,流程是用户输入一个 URL,然后我抓取该页面的屏幕截图并将其显示在链接旁边。够简单吗?
我目前已下载pywebshot它在我本地盒子上的终端上运行得很好。但是,当我将其放在服务器上时,我收到了段错误,并带有以下回溯:
/usr/lib/pymodules/python2.6/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
warnings.warn(str(e), _gtk.Warning)
./pywebshot.py:16: Warning: invalid (NULL) pointer instance
self.parent = gtk.Window(gtk.WINDOW_TOPLEVEL)
./pywebshot.py:16: Warning: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
self.parent = gtk.Window(gtk.WINDOW_TOPLEVEL)
./pywebshot.py:49: GtkWarning: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
self.parent.show_all()
./pywebshot.py:49: GtkWarning: gdk_screen_get_default_colormap: assertion `GDK_IS_SCREEN (screen)' failed
self.parent.show_all()
./pywebshot.py:49: GtkWarning: gdk_colormap_get_visual: assertion `GDK_IS_COLORMAP (colormap)' failed
self.parent.show_all()
./pywebshot.py:49: GtkWarning: gdk_screen_get_root_window: assertion `GDK_IS_SCREEN (screen)' failed
self.parent.show_all()
./pywebshot.py:49: GtkWarning: gdk_window_new: assertion `GDK_IS_WINDOW (parent)' failed
self.parent.show_all()
Segmentation fault
我知道有些东西无法在 pts 环境中运行,但说实话,现在这有点超出我的能力范围。如果我需要以某种方式假装我的 pts 连接是 tty,我可以尝试一下。但现在我什至不确定发生了什么,我承认这有点超出我的能力范围。任何帮助将不胜感激。
另外,如果有一个网络服务可以传递 URL 并接收图像,那也可以。我不认同 pywebshot 的想法。
我确实知道我所在的服务器正在运行 X 并且安装了所有必需的 python 模块。
提前致谢。
最佳答案
我找到了websnapr.com这是一个网络服务,只需一点点工作即可为您提供图像。
import subprocess
subprocess.Popen(['wget', '-O', MYFILENAME+'.png', 'http://images.websnapr.com/?url='+MYURL+'&size=s&nocache=82']).wait()
简单易行。
关于python - 如何使用python将网页另存为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4091940/