1

Jsoupを使用して、Webサイトから郵便番号でデータを抽出しています。郵便番号はテキストファイルから読み取られ、結果はコンソールに書き込まれます。私は約1500の郵便番号を持っています。プログラムは2種類の例外をスローします。

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=500, URL=http://www.moving.com/real-estate/city-profile/...

java.net.SocketTimeoutException: Read timed out

解決策は、一度に少数のデータのみを読み取ることだと思いました。そこで、カウンターを使用して、テキストファイルから200の郵便番号をカウントし、200の郵便番号のデータを取得してから5分間プログラムを停止しました。私が言ったように、私はまだ例外があります。これまでのところ、例外が表示されたら、使用可能なデータをコピーして貼り付け、その後、次の郵便番号を使用して続行します。しかし、私はすべてのデータを中断することなく読み取りたいと思っています。これは可能ですか?ヒントをいただければ幸いです。前もって感謝します!

これは、すべてのデータを読み取るための私のコードです。

    while (br.ready())
        {
            count++;

            String s = br.readLine();
            String str="http://www.moving.com/real-estate/city-profile/results.asp?Zip="+s; 
            Document doc = Jsoup.connect(str).get();

            for (Element table : doc.select("table.DataTbl"))
            {
                for (Element row : table.select("tr")) 
                {
                    Elements tds = row.select("td");
                    if (tds.size() > 1)
                    {
                        if (tds.get(0).text().contains("Per capita income"))
                            System.out.println(s+","+tds.get(2).text());
                    }
                }
            }
            if(count%200==0)
            {
                Thread.sleep(300000);
                System.out.println("Stoped for 5 minutes");
            }
        }
4

2 に答える 2

1

この行を更新しDocument doc = Jsoup.connect(str).get();て、タイムアウトを次のように設定します。

        Connection conn = Jsoup.connect(str);
        conn.timeout(300000); //5 minutes
        Document doc = conn.get();
于 2012-10-20T03:35:41.007 に答える
0

接続conn=Jsoup.connect(str); conn.timeout(0); /無限タイムアウト

要求のタイムアウトを設定します(接続と読み取り)。タイムアウトが発生すると、IOExceptionがスローされます。デフォルトのタイムアウトは3秒(3000ミリ秒)です。ゼロのタイムアウトは、無限のタイムアウトとして扱われます。

パラメーター:

millis - number of milliseconds before timing out connects or reads.

戻り値:

this Connection, for chaining

ソース:jsoup API

タイムアウトをゼロに設定します。このようにすると、5分間停止する必要がなくなります。

于 2012-10-20T03:32:36.113 に答える