【问题标题】:How to download a file browser in Python+Webkit+Gtk?如何在 Python+Webkit+Gtk 中下载文件浏览器?
【发布时间】:2017-01-06 10:30:45
【问题描述】:

这是一个简单的 Python Webkit Gtk 浏览器:

#!/usr/bin/python

import gtk
import webkit

view = webkit.WebView()
sw = gtk.ScrolledWindow()

sw.add(view)

win = gtk.Window(gtk.WINDOW_TOPLEVEL)

win.add(sw)

win.show_all()

view.open("https://www.kernel.org/")

gtk.main()

浏览效果很好。不幸的是,将文件保存在本地计算机上不起作用。我找不到现成的解决方案。我不需要进度条,文件夹选择,我要点击链接导致下载。你知道将文件保存到目录 /home/user 的最简单方法吗?

【问题讨论】:

  • 有点离题,但你应该使用 pygobject 和 webkit2gtk。不支持旧的 pygtk 版本,并且该版本的 webkit 非常不安全。

标签: python download webkit gtk pygtk


【解决方案1】:

正如docs 中所说,您必须连接到mime-type-policy-decision-requesteddownload-requested 信号。

view.connect('download-requested', download_requested)
view.connect('mime-type-policy-decision-requested', policy_decision_requested)

然后您检查 mime-type 并决定是否要下载它:

def policy_decision_requested(view, frame, request, mimetype, policy_decision):
    if mimetype != 'text/html':
        policy_decision.download()
        return True

当之后发出download-requested 时,您可以让WebKit.Download 对象处理下载或(在这种情况下)使用python 来完成:

def download_requested(view, download):
    name = download.get_suggested_filename()
    path = os.path.join(
        GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DOWNLOAD),
        name
    )
    urlretrieve(download.get_uri(), path)  # urllib.request.urlretrieve
    return False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-27
    • 2020-07-18
    • 1970-01-01
    • 2015-01-22
    • 2018-11-05
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多