如何在Python + Webkit + Gtk中下载文件浏览器?

时间:2017-01-06 10:30:46

标签: python download webkit gtk pygtk

这是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的最简单方法吗?

1 个答案:

答案 0 :(得分:2)

正如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