8

C# で解析したいコンテンツのレポート Web サイトがあります。WebClient を使用して html をダウンロードしようとしましたが、Web サイトにアクセスしたときにほとんどが js を介して生成されるため、完全なソースを取得できません。

WebBrowser を使用してみましたが、Application.Run() と SetApartmentState(ApartmentState.STA) を使用した後でも、コンソール アプリで動作させることができませんでした。

この生成された html にアクセスする別の方法はありますか? mshtml も調べましたが、わかりませんでした。

ありがとう

4

4 に答える 4

3

Javascript はブラウザによって実行されます。コンソール アプリが JS を取得した場合、期待どおりに動作していることになります。本当に必要なのは、ダウンロードした JS コードをコンソール アプリが実行することです。

于 2012-01-23T23:41:44.633 に答える
3

ヘッドレス ブラウザを使用できます - XBrowser may server.

そうでない場合は、このブログ投稿で説明されているように HtmlUnit を試してください。

于 2012-01-23T22:29:37.557 に答える
0

ここにコメントだけ。一部の C# コードを使用して HTTP 要求を実行することと、ブラウザーによって生成される要求との間に違いはありません。対象の Web ページが混乱し、適切なマークアップを生成していない場合は、それが提供していると考えられるタイプのブラウザーから頭や尾を引くことができないため、次のようにユーザー エージェントを設定するだけで済みます。

((HttpWebRequest)myWebClientRequest).UserAgent = "<a valid user agent>";

たとえば、現在のユーザー エージェントは次のとおりです。

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1

おそらく、一度それを行うと、ページは正しく機能します。リファラーなど、他の要因が働いている可能性もありますが、最初にこれを試して、機能するかどうかを確認します.

于 2012-01-23T22:37:15.410 に答える
0

最善の策は、コンソール アプリ ルートを放棄し、Windows フォーム アプリケーションを構築することです。その場合、WebBrowser は何の作業も必要なく動作します。

于 2012-01-23T23:46:08.333 に答える