質問

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

これは、最大要求制限が1MBで、ページからの合計HTMLが約1.5MBであるためです。

さて、私の質問:私は削るためにHTMLの最初の20行だけが必要です。 ResponsetOulargeExceptionがスローされないように、HTMLの一部のみを取得する方法はありますか?

前もって感謝します!

役に立ちましたか?

解決

低レベルの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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top