3

HTMLUnit を使用して Web サイトをスクレイピングする Java アプリケーションを構築しようとしています。一部のデータを抽出した後、アプリケーションで次の例外が発生します - java.lang.RuntimeException: org.apache.http.conn.HttpHostConnectException: 接続が拒否されました。

アプリケーションを再度実行すると、同じ例外で失敗する前に、一部のデータを再度抽出できます。おそらく、サーバーは同じクライアント IP からの多くのリクエストを確認し、リクエストの接続を拒否します。

また、アプリケーションでこの問題が発生した場合、ブラウザを使用してサイトに接続できます。

どうすればこの問題を克服できますか? Webスクレイピングアプリケーションでは、そのような問題にどのように取り組み、解決していますか?

4

1 に答える 1

0

これは私がそのような問題をデバッグする方法です:

フィドラーをダウンロード

デフォルトでは、フィドラーはポート 8888 でリッスンします。必要なのは、フィドラーをプロキシとして使用するように webClient を構成することだけです。その後、送信されるすべてのリクエストをフィドラーで確認 (分析、変更、再送信も) できます。

    client.getOptions().setProxyConfig(new ProxyConfig("127.0.0.1", 8888));

以前の経験から言えることは、しばらくするとターゲット サイトがブロックされるということです。一時停止を追加するか、プロキシとユーザー エージェントをローテーションしてみてください。Cookie のクリアを試すこともできます。

于 2013-12-15T19:05:46.753 に答える