2

重複の可能性:
Webkit GTK: ドキュメントの読み込みがいつ終了したかを判断する

JavaScript リダイレクトを自動的に処理するために、WebKitGTK+ を使用して Web サイトの HTML コンテンツを取得したいと考えています。

次の 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'

Web サイトは正常に読み込まれますが、別の場所にリダイレクトする Web ページにリダイレクトする特別な Web サイトがいくつかあります。load-finishedイベントを関数に接続しようとしましたが、2 回呼び出されました。

WebKit が Web ページを完全に読み込んだことを知る方法はありますか?

WebKit がまだ JavaScript コードを実行しているかどうかを知るにはどうすればよいですか?

4

1 に答える 1

2

これらのリダイレクトが javascript で開始され、多くの場合、n 秒後にsetTimeoutによって開始されるページがあり、そのような「癖」をスキャンする組み込みの方法がないため、すべての Web サイトでそのタスクをプログラムで達成する確実な方法はありません。 . ただし、そのようなリダイレクトが発生することが確実にわかっている、既知の Web サイトのグループを解析している場合は、リダイレクトが発生するまでの必要な秒数でそれらの URL のリストを作成できます。最初の loadFinished が起動された後、QTimer を開始し、その信号を loadFinished を再度起動する関数に接続すると、結果を待っている間に次のページの読み込みが確実に開始されます。新しい loadStarted シグナルが発生しなくなり、リダイレクトを再度実行する必要がなくなるまで、ページの結果を待ちます。

于 2012-10-18T16:55:00.983 に答える