【问题标题】:Waiting for a website to load completely with WebKitGTK+ [duplicate]等待网站使用 WebKitGTK+ 完全加载 [重复]
【发布时间】:2012-10-18 15:52:12
【问题描述】:

可能重复:
Webkit GTK: Determine when a document is finished loading

我想用 WebKitGTK+ 获取网站的 HTML 内容以自动处理 javascript 重定向。

我正在使用以下 Python 代码:

def scanURL(domain, retries=3):
    status = 0
    loading = 0

    browser = webkit.WebView()
    browser.open('http://' + domain)
    while browser.get_load_status() < 2:
        continue

    if browser.get_load_status() == 4:
        if retries > 0:
            return scanURL(domain, retries - 1)
        return 'Failed'

    return 'Success'

网站加载正常,但是有一些特殊的网站正在重定向到重定向到其他地方的网页,我尝试将 load-finished 事件连接到一个函数,它被调用了两次。

有没有办法知道 WebKit 何时完全加载了网页?

我如何知道 WebKit 是否仍在执行一些 JavaScript 代码?

【问题讨论】:

标签: python webkit python-2.7 webkitgtk


【解决方案1】:

没有确定的方法可以为所有网站以编程方式完成该任务,因为有些页面使用 javascript 启动这些重定向,通常在 n 秒后由 setTimeout 启动,并且没有构建-in 方法来扫描此类“怪癖”。但是,如果您正在解析一组已知的网站,并且您肯定知道会发生这种重定向,您可以创建一个包含所需秒数的这些 url 列表,然后重定向将发生。触发初始 loadFinished 后,您可以启动 QTimer,将其信号连接到将再次触发 loadFinished 的函数,因此在您等待结果时,下一个页面加载肯定会开始。 等待页面结果,直到没有新的 loadStarted 信号触发并且不需要再次进行重定向。

【讨论】:

  • 对不起,我根据我在 pyqt/pyside 中使用 qtwebkit 的经验给出了这个想法...
猜你喜欢
  • 2021-02-05
  • 2015-03-23
  • 1970-01-01
  • 2018-11-07
  • 2019-12-19
  • 2017-02-06
  • 2011-12-23
  • 2017-02-03
  • 1970-01-01
相关资源
最近更新 更多