2 Stimmen

Google App Engine (Java) : Probleme mit zu großen URL-Abrufantworten

Ich versuche, eine Art von Webservice auf Google Apps zu bauen.

Das Problem ist nun, dass ich Daten von einer Website abrufen muss (HTML-Scraping).

Die Anfrage sieht wie folgt aus:

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;

Jetzt meldet App Engine in der 3. Zeile die folgende Ausnahme:

com.google.appengine.api.urlfetch.ResponseTooLargeException

Das liegt daran, dass die Höchstgrenze für Anfragen bei 1 MB liegt und der gesamte HTML-Code der Seite etwa 1,5 MB groß ist.

Nun meine Frage: Ich brauche nur die ersten 20 Zeilen der HTML-Datei zum Scrapen. Gibt es eine Möglichkeit, nur einen Teil der HTML zu erhalten, so dass die ResponseTooLargeException nicht ausgelöst wird?

Vielen Dank im Voraus!

2voto

Das Problem wurde durch die Verwendung der URLFetch-Api auf niedriger Ebene gelöst.

Und setzen Sie die Option allowtruncate auf true;

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

Im Grunde funktioniert es so:

HTTPRequest request = new HTTPRequest(_url, HTTPMethod.POST, Builder.allowTruncate());
URLFetchService service = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = service.fetch(request);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X