0

私は現在、sourceforge.comをスクレイプし、Javaで記述されたオープンソースプロジェクトのリポジトリからtarballのリンクを取得するプログラムに取り組んでいます。

最初にホームページで空の検索コマンドを実行します。これにより、左側にフィルターが設定されたsourceforge.netのプロジェクトが一覧表示されます。次に、「java」プログラミング言語でフィルタリングし、各カテゴリ(プロジェクトの合計10カテゴリ)を参照して、各カテゴリの最初の25プロジェクトのリンクを取得します。したがって、250のプロジェクト名とそのWebアドレスを持つハッシュマップができました。さらに進んで、これらの各リンクに移動し、各ページに「コードの参照」リンクを表示します。このページには「TARballのダウンロード」へのリンクがあります。

別のページに接続してホームページから深く移動しようとすると、実行時に次のエラーが発生します(エラーは実行時にランダムに発生します)

スレッド"main"の例外java.net.SocketTimeoutException:java.net.SocketInputStream.socketRead0(ネイティブメソッド)で読み取りがタイムアウトしました

各「Jsoup.connect」リクエストの間に3分の待機時間を与えようとしました。しかし、それでもエラーは解決しません。なぜこれが発生するのか、そしてこれをどのように解決するのかわかりません。任意の提案、アイデアは大歓迎です。

リンクのサンプルフローを以下に示します。1。ホームページ2.空の検索が実行されました3.Javaおよびモバイルカテゴリでフィルタリングします4.フィルタリング後の最初のプロジェクト5.プロジェクト内のリンクを参照します:http ://wurfl.cvs.sourceforge.net / wurfl / 6.最終的なTarballリンク:http ://wurfl.cvs.sourceforge.net/viewvc/wurfl/?view = tar

4

1 に答える 1

0

なぜこれが発生するのか、これを解決する方法はわかりません。どんな提案、アイデアも大歓迎です。

2 つの可能性:

  • サーバーは一時的に過負荷になったり、壊れたりします。

  • サーバーは、Web スクレイピングを防止するために何らかの技術的手段を実装しています。

あなたが行おうとしていることがSourceForge の利用規約に準拠していることを確認しましたか?

于 2011-05-25T01:07:01.260 に答える