Webseite auslesen

  • 9 Antworten
  • Letztes Antwortdatum
P

Patrix

Neues Mitglied
0
Ich möchte Daten von einer Webseite auslesen und in meiner Datenbank speichern.

Meine Routine zum Auslesen der Webseite lautet:
Code:
public String Seite_Lesen(String Heim, String Gast, String Liga, String Datum,String Spieltag) throws IOException{
 String Endergebnis="";
 Liga = Liga.replace(" ","%20");
  
 String sURL;
 sURL="[URL]http://www.kicker.de/news/fussball/bundesliga/[/URL]" & Liga "/" & Datum & "/" & Spieltag + "/0/spieltag.html";
 
    URL urlKicker = new URL(sURL);
    URLConnection conn = urlKicker.openConnection();
    BufferedReader in = new BufferedReader(
            new InputStreamReader(
            conn.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null) 
     Endergebnis = Endergebnis  + inputLine;
    in.close();    
    return Endergebnis;
 };
Diese Routine liefert mir den kompletten Inhalt der Seite zurück. Aus dem Endergebnis-String wird dann von mir das gesuchte Ergebnis mittels Regex ausgelesen. Dieser Vorgang dauert jedoch in der Praxis sehr lange. Da mir bereits die beiden Suchbegriffe Heim und Gast bekannt sind gibt es doch sicher eine Möglichkeit die Daten schneller auszulesen. Hab jemand einen Hinweis oder kennt jemand einen besseren Weg um an das Ergebnis zu kommen?
 
Zuletzt bearbeitet von einem Moderator:
Mit was arbeitest du denn?
Einen "simplen" String auseinander zu nehmen und entsprechend anzeigen zu lassen sollten bei heutigen Proessozren nicht mehr als 0,4 Sekunden dauern :D

(Achtung, die Zahl ist ausgedacht!)
 
Das Problem ist nicht den String auseinander zu nehmen, sondern vielmehr die Daten von der Webseite zu laden. Bisher lade ich jedes Mal die komplette Webseite in den String bzw. lese die komplette Webseite aus. Ich suche eine Möglichkeit nur einen bestimmten Teil der Webseite auszulesen. Die Geschwindigkeit geht nämlich beim Auslesen der Webseite verloren.
 
Hallo Patrix,

.. auch wenn du wüsstest , dass du z.b. ab zeile 1000 deine infos hast, die du benötigst - so wirst du nicht um herkommen, sie trotzdem (wenn auch sequential line by line) bis dahin zu lesen/laden
 
Da kannst du kaum was machen.
Denn 1 Buchstabe = 8 Bit. Ob jetzt 2 Millionen zeichen mehr oder weniger spielt fast keine Rolle.
Denn 2 Millionen Zeichen (= 2 Millionen Byte)/1024/1024 =~ 2 MB.
Um dir eine Vorstellung von 2 Millionen zeichen zu geben -> PiratePad: Ox39SG0oky <- Das sind bisschen mehr als 2 Mio zeichen!
So viel wird nicht auf der Webseite sein.

Ergo: Es liegt an der Verbindung zu Server/Client.
Wenn nicht dein Server, zur omptimierung, dann kannst nichts machen.
 
Vielen Dank! Irgendwie leuchtet es auch ein, dass man die Daten sequentiell auslesen muss. Ich habe mir halt vorgestellt, dass man statt auf den Quellcode der Webseite gleich auf den Textinhalt zugreifen kann und sich damit sämtliche Formatierungen spart. :(
Ich werde versuchen das Auslesen der Webseite soweit wie möglich zu vermeiden.
 
Aber bitte nicht mit a = a + b Strings zusammen bauen. Dann wird es nämlich doch lahm. Stattdessen StringBuilder und append nehmen.
 
Zuletzt bearbeitet:
Aus aktuellem Anlass, da ich mich grad mit Webservices beschäftige:

OpenLigaDB - Communitybasierte Sportdaten per XML-Webservice

Hier ist ein Webservice für Fussballergebnisse. Dort musst Du also keine ganzen HTML-Seiten mit reichlich Overhead laden, sondern kannst Dir die Sachen laden, die Dich interessieren. Musst dann halt XML interpretieren, aber das ist ja recht simpel mit den bereits vorhandenen Klassen.

Falls es Deinen Ansprüchen nicht gerecht wird, such mal nen anderen Webservice der die Inhalte, die Du suchst bietet und den Du konsumieren kannst.

Gruß,
Thomas
 
Vielen Dank für eure Anregungen. Ich habe den Stringbuilder eingebaut und die Aufrufe der Webseite reduziert. Damit konnte ich eine zufriedenstellende Laufzeit erreichen.
 
DieGoldeneMitte schrieb:
Aber bitte nicht mit a = a + b Strings zusammen bauen. Dann wird es nämlich doch lahm. Stattdessen StringBuilder und append nehmen.

Jaja. Das sollte man schon beachten :D

Sent from my GT-I9100 using Android-Hilfe.de App
 
Zurück
Oben Unten