2012-01-06 9 views
0

私は問題を解決しようとしています。私はWebブラウザコントロールを備えたプログラムを持っています。 一部のWebサイトからクロール処理を自動化します。問題は、最近のウェブサイトの変更後にウェブブラウザを修正できないことです。ウェブブラウザーとIEの動作は異なりますか?

ウェブサイトのページナビゲーションが変更されました。そして、私がウェブブラウザ(私のアプリで)でアクションを手動で行うと、ウェブサイトの次の/前のページには行きません。それは何もしません... IE 7/8/9では正しく動作しますが(今回はスクリプトエラーのみがスローされます)。

ウェブブラウザーはIEと完全に似ていないことを意味しますか?

ソースコードが表示されないのは残念ですが、ここでは役に立たないと思います。どのようにトラブルシューティングを行う必要がありますか? Webブラウザコントロールでページナビゲーションが機能しないのはなぜですか?

Webbrowserを新しいプロジェクトのウィンドウフォームに置き、Webサイトカタログの2/3 /../10ページを移動しようとしましたが、ページ番号が変更されてそのページに移動しません。

編集:ウェブブラウザで手動でマウスのクリックを使用しても、ウェブサイトは礼儀正しく動作しませんが、IEでは動作します。

EDIT2:私の質問ではっきりしないかもしれません。問題は、Webブラウザを使ってウェブサイトでもマウスを使ってWebサイトを使用することができないことです。それをクリックするとページ番号が変わりますが、そのページには移動しません。それは静かなままです。私はAllowNavigationプロパティがtrueであると確信しています。それは昨日働いて、今日のウェブサイトの変更後に停止...私はそれを解決するためにどのように行くべきか教えてください..私はWebブラウザコントロールがInternet Explorerと同じように動作すると思った。ありがとう

EDIT3:奇妙なこと...私は拡張Webブラウザを読み込んでそのWebサイトに移動しました。ページナビゲーションパネルもそこでは動作しません。彼らの側にあるバグか、クローラからのガードですか?どう思いますか? (http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx)

+0

-1:コードを入力していただきありがとうございます。 –

+0

John、IEと同じWebサイトでWebブラウザコントロールが異なる動作をする理由を確認するにはどうすればよいですか? –

+2

投稿したコードとは確かに関係しています。 –

答えて

0

これはあなたが望む答えではないと確信していますが、ウェブブラウザを使用してウェブサイトをスクラップしても、維持するのは非常に苦労します。

代わりにHttpWebRequestオブジェクトとHttpWebRepsonseオブジェクトを使用して、Webサーバーへの呼び出しを再作成します。

Fiddler(http://www.fiddler2.com/fiddler2)とブラウザを使用してWebセッションを記録し、コードで再作成することができます。

+0

ありがとう、ジョン!しかし、ウェブサイトへの実際のリクエスト/レスポンスを生成するのではなく、ユーザーのような操作を維持する方が簡単でした(クリックエミュレートによる)。サーバー側のヘッダーを変更すると、アプリケーションを修正する必要がありますか? –

+0

それは異なります。私はサイトを削り取り、コードを減らすためにほとんどの呼び出しとヘッダーを削除してしまいましたが、それでも機能します。だから私は彼らのコードが実際にリファラーのような特定のヘッダをチェックしていなければ、それは問題ではないと思うだろう。サイトのHTMLが変更された場合は、どちらの方法でもコードを更新する必要があります。 – user1231231412

0

ウェブブラウザコントロールを設定して、ナビゲーションを含む多くの機能を無効にすることができます。

I.e. C#WebBrowserコントロールでnavを無効にするには:

webBrowser1.AllowNavigation = false; 

私はこのようなことは何もしていないことを再度確認します。

+0

いいえ、私は自分のコードでそのプロパティを変更しませんでした。それは最後のウェブサイトの変更以来、動作を停止しました.. –

0

最近、そのフォーマットを変更した特定のWebサイトで同じ問題が発生しました。それは、コントロールによって使用されるIEのバージョンと関係しています。

私の場合は最新のIEバージョンを強制的に使用してください。私のアプリケーションのために適切なレジストリ項目を9999に設定しました。次を参照してください:Webbrowser control behaving different than IE

関連する問題