【问题标题】:Getting HTML source using WebKit2使用 WebKit2 获取 HTML 源代码
【发布时间】:2017-11-26 21:49:23
【问题描述】:

我使用一个小的 Python3 程序,我想从 Webkit 切换到 WebKit2。简而言之,我在 Gtk 窗口中打开一个网站,并希望将 html 代码存储在一个变量中。 对于 WebKit 来说很简单:

import sys
import gi
gi.require_version('WebKit', '3.0') 
from gi.repository import WebKit
from gi.repository import Gtk, Gdk

starturl = 'https://www.google.de'

def printHTML(webview, frame):
    html = frame.get_data_source().get_data().str
    print(html)

webview = WebKit.WebView()
webview.open(starturl)
webview.connect("load-finished", printHTML)

win = Gtk.Window()
win.add(webview)
win.connect("delete-event", Gtk.main_quit)
win.set_default_size(800,600)
win.show_all()

Gtk.main()

使用 WebKit2 一切都很好,除了:我无法获取 html 代码...

import sys
import gi
gi.require_version('WebKit2', '4.0') 
from gi.repository import WebKit2
from gi.repository import Gtk, Gdk

starturl = 'https://www.google.de'

def printHTML(webview, event):
    html = ???
    print(html)

webview = WebKit.WebView()
webview.load_uri(starturl)
webview.connect("load-changed", printHTML)

win = Gtk.Window()
win.add(webview)
win.connect("delete-event", Gtk.main_quit)
win.set_default_size(800,600)
win.show_all()

Gtk.main()

WebKit2 中是否有“框架”的等价物? 也许有人知道解决方案。

问候和感谢。 直到

【问题讨论】:

    标签: python-3.x webkit2


    【解决方案1】:

    您需要使用 WebView.get_main_resource() 函数,从该资源中获取 data 并创建一个 callback 函数来检索 html 源代码。

    此示例代码用于class:

    def on_load_changed(self, webview, event):
        if event == WebKit2.LoadEvent.FINISHED:
            resource = webview.get_main_resource()
            resource.get_data(None, self._get_response_data_finish, None)
    
    def  _get_response_data_finish(self, resource, result, user_data=None):
        self.html_response = resource.get_data_finish(result)
        print((self.html_response))
    

    【讨论】:

    • 对于“真正新”的编码,这将返回一个字节字符串,并且可能需要解码才能有用。示例:print(self.html_response.decode("utf-8")) 相关 SO QA:stackoverflow.com/q/606191/4576663
    猜你喜欢
    • 2013-04-06
    • 2016-10-06
    • 2011-04-05
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 2014-11-25
    相关资源
    最近更新 更多