2

我正在尝试在谷歌应用程序上构建某种网络服务。

现在的问题是,我需要从网站获取数据(HTML Scraping)。

请求看起来像:

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 行。有没有办法只获取 HTML 的一部分,这样 ResponseTooLargeException 就不会被抛出?

提前致谢!

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 回答