1

こんにちはstackoverflowユーザー。

Web スクレイピングを行っていたときに、特定のサイトの一連の Web ページをスクレイピングすると、それらの URL が

http://www.somewebsites.com/abc.php?number=0001
http://www.somewebsites.com/abc.php?number=0002
http://www.somewebsites.com/abc.php?number=0003
..
..
http://www.somewebsites.com/abc.php?number=1234

このようなもの。一部のページが時々ダウンする可能性があり、サーバーが別のページ、たとえばホームページにリダイレクトすることでそれを処理する場合があるためです。このように、私のスクレイピング プログラムは、構文構造の変更に関連するさまざまな例外に遭遇します (別のページであるため)。

この場合、プログラムが終了するのを防ぐために、スクレイピングしているWebページが存在するかどうかを確認する方法があるかどうか疑問に思っています.

私は使用しています

Jsoup.connect()

そのページに接続します。ただし、失敗した Web ページ (リダイレクト) にアクセスすると、別のページにリダイレクトされました。私のプログラムでは、コンソールは接続に関する例外をスローしません。代わりに、予期しないリダイレクトされた Web ページの構造がまったく異なるため、この例外は単なるインデックス アウト オブ バウンドの例外です。

4

1 に答える 1

0

一部のページが時折ダウンする可能性があり、サーバーが別のページにリダイレクトすることでそれを処理する場合があるため、たとえばホームページ

一般に、Web サイトのページが一時的に利用できず、リダイレクトされた場合、クライアントは、リダイレクトされたページを指す「Location」ヘッダーを含む 302 (永続的に移動) または 307 (一時的に移動) として応答コードを取得します。followRedirectsを falseConnectionに設定することで、このような場合にリダイレクトしないように設定できるようです。次に、さらに処理するために応答を Document に変換する前に、HTTP 応答コードを確認できます。

于 2012-10-15T11:34:20.157 に答える