等待网站完全加载WebKitGTK +

时间:2012-10-18 15:52:13

标签: python webkit python-2.7 webkitgtk

  

可能重复:
  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代码?

1 个答案:

答案 0 :(得分:2)

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