1

タイトルが示すように、

使用するためにログインが必要な特定のWebサイトからデータを取得する必要があります。

ログイン手順には、Cookieまたはセッションが必要な場合があります。

QtWebkitが必要ですか、それともQNetworkAccessManagerだけで済ませることができますか?

私は両方の経験がなく、進むにつれて学び始めます。ですから、両方を比較する時間を少し節約してください^^

前もって感謝します、

エヴァン

編集:いくつかの関連する回答を読んだ後、いくつかの説明を追加します:

問題のWebサイトにはAPIがありません。したがって、データのWeb要素を自分でスクレイピングする必要があります。QNetworkAccessManagerだけでそれを行うことはできますか?

4

2 に答える 2

2

いいえ、ほとんどの場合、完全にシミュレートされたWebブラウザーは必要ありません。ほとんどの場合、Webブラウザと同じWebリクエストを実行するだけで十分です。

Firefoxの「HTTPLiveHeaders」や「Firebug」などのプラグインを使用して、ブラウザでWebリクエストを記録してみてください。Chromeは箱から出して同様のツールを提供していると思います。これらのツールは、Webページでフォームを送信するときにWebサイトによって実行されたGETおよびPOST要求を記録します。

別のオプションは、ログインページのHTMLコードを検査することです。<form>タグとそのフィールドを見つけます。それらをアプリケーションのGET/POSTリクエストにまとめて、同じフォームをシミュレートします。

一部のページではフォームにランダム化された「トークン」を使用し、一部のページではトークンをCookieとして設定していることに注意してください。このような場合、最初に(記入済みのフォームを送信する前に)アプリケーションでログインページ自体を要求する必要があります。QWebViewとQNetworkAccessManagerの両方がCookieをサポートしています。

要約すると、QWebViewは、Webページとのユーザーインタラクションをシミュレートするためのはるかに洗練された方法を提供すると思います。ただし、手動の方法は、Webkitを必要とせず、アプリケーションが高速になる可能性があるため、より「軽量」です(HTMLページのみが読み込まれ、画像、CSS、javascriptファイルなどのリンクされたリソースがないため)。

于 2012-07-13T12:14:57.990 に答える
0

クラス名が示すQWebViewはビューであるため、何か(この場合はWebページ)を表示します。ロードされたページを表示する必要がない場合は、ビューは必要ありません。QNetworkAccessManagerが機能する場合がありますが、HTTPプロトコルに関する知識と、ターゲットサイトに関する知識が必要です。ログインをどのように処理するか、ログインに送信する必要のあるリクエストの種類などです。

于 2012-07-13T12:14:49.680 に答える