情報: JavaScript の知識がありません。なし。
Web ページが完全にロードされたことを判断する方法があるかどうか知りたいです。Webkit を使用してページをレンダリングする (および Webkit の JS エンジンを使用して JS 関数を解析し、DOM などの処理を終了する) クローラーがあるとします。私が行うと考えていること:
1) すべてのスクリプトの実行が終了しました。2) 保留中の AJAX 呼び出しはありません。3) DOM は、現在入手可能な情報に基づいて完全に処理およびロードされます。
より具体的な仮説として、いくつかのサイトのソースを見ると、DOM に何かを挿入するスクリプト タグを使用して広告を読み込み、AJAX 呼び出しを発行して広告を読み込み、入力することがわかります。これらすべてがいつ完了したかをどのように判断できますか?
(例を非同期のものに置き換えてください。上記よりも普遍的なものは考えられませんでした。)
「検出」とは、可能な限りあらゆる方法で行います。たとえば、何かが完了したことを知らせるためにページに何かを書き込む JS コードをページに挿入します。または、たとえば QtWebkit を使用すると、JS は C++ を呼び出すことができるので (私は信じています)、JS スニペットは C++ 関数を呼び出して、ページがいつ「読み込まれた」かを知らせることができます。要するに、機能するものは何でも。
私が持っている現在の「素朴な」実装は、ページをロードした後、座って数秒間待機します。それは愚かです。
回答を理解する前にさらに背景情報が必要な場合は、「これを最初に読んでください」と気軽に言ってください。
どうもありがとうございました!