2

Google アプリである種の Web サービスを構築しようとしています。

問題は、Web サイト (HTML スクレイピング) からデータを取得する必要があることです。

リクエストは次のようになります。

URL url = new URL(p_url);
con = (HttpURLConnection) url.openConnection();
InputStreamReader in = new InputStreamReader(con.getInputStream());
BufferedReader reader = new BufferedReader(in);

        String result = "";
        String line = "";
        while((line = reader.readLine()) != null)
        {
            System.out.println(line);
        }
        return result;

これで、App Engine は 3 行目に次の例外を表示します。

com.google.appengine.api.urlfetch.ResponseTooLargeException

これは、リクエストの最大制限が 1 MB であり、ページからの HTML の合計が約 1.5 MB であるためです。

ここで私の質問: スクレイピングする必要があるのは、html の最初の 20 行だけです。ResponseTooLargeException がスローされないように、HTML の一部のみを取得する方法はありますか?

前もって感謝します!

4

1 に答える 1

2

低レベルの URLFetch API を使用して問題を解決しました。

allowtruncate オプションを true に設定します。

http://code.google.com/intl/nl-NL/appengine/docs/java/javadoc/com/google/appengine/api/urlfetch/FetchOptions.html

基本的には次のように機能します。

HTTPRequest request = new HTTPRequest(_url, HTTPMethod.POST, Builder.allowTruncate());
URLFetchService service = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = service.fetch(request);
于 2010-10-22T12:34:58.900 に答える