Java: Webseiten einlesen klappt unzuverlässig

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.

BBCode ist eingeschaltet
[img] ist eingeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Ansicht erweitern Die letzten Beiträge des Themas: Java: Webseiten einlesen klappt unzuverlässig

Re: Java: Webseiten einlesen klappt unzuverlässig

von Jo » 31 Aug 2010, 13:14

Stimmt, wären 4 zusätzliche statt 6. Ich denke halt an die Anfänger, die Sender anbieten wollen, aber sich mit Java nicht auskennen. Ich denke, da sind libs, die eingebunden werden müssen, vielleicht eher Hürde als Hilfe, wenn sie nicht ohnehin zwingend nötig sind. Wer sich damit auskennt, kann die libs ja verwenden, wenn es damit besser läuft. Seitdem ich das bei dem Parser oben einsetze, scheint auch alles zu klappen.

Re: Java: Webseiten einlesen klappt unzuverlässig

von uzi » 31 Aug 2010, 11:34

ab davon finde ich jetzt nicht, dass 4 jars 'viel' sind.

Re: Java: Webseiten einlesen klappt unzuverlässig

von uzi » 28 Aug 2010, 20:41

hm... ich sehe das in dem umfeld nicht wirklich als problem, wenn da viele jars gebraucht werden. du?

Re: Java: Webseiten einlesen klappt unzuverlässig

von Jo » 17 Aug 2010, 15:49

Das braucht ja eine ziemliche Menge Jars zum laufen http://hc.apache.org/httpcomponents-cli ... start.html . War mir gar nicht bewusst.
Als offizieller Weg TVB-Parser zu machen, ist der Apache Http Client dann wohl nicht so praktisch. Bisher haben wir im Starterkit eine externe Jar, dann wären es 7, nur um eine Funktionalität zu vereinfachen.

Re: Java: Webseiten einlesen klappt unzuverlässig

von Jo » 09 Jul 2010, 13:42

Oh je, ich bin überarbeitet. Ich hatte den neuen Code noch gar nicht eingecheckt. Das heißt, dass momentan mit dem alten Code alles problemlos läuft. Kann ich also weiterhin nicht testen.

Re: Java: Webseiten einlesen klappt unzuverlässig

von Jo » 09 Jul 2010, 12:14

uzi hat geschrieben: sondern nutze für sowas den apache http client: http://hc.apache.org/httpcomponents-cli ... index.html.
Nachdem ich das eine Weile nicht testen konnte, weil der alte Code auch wieder lief, sieht es jetzt so aus, dass es damit funktioniert. Danke.

Re: Java: Webseiten einlesen klappt unzuverlässig

von Jo » 24 Jun 2010, 22:36

Ich komme im Moment nicht mal dazu das auszuprobieren. Dafür wird morgen wohl endlich im TVB stehen, bei welchen Sendern die Achtelfinale laufen. Das das so lange gedauert hat liegt aber nicht an TVB ;-).

Re: Java: Webseiten einlesen klappt unzuverlässig

von uzi » 24 Jun 2010, 07:17

manchmal hilft es übrigens auch, die kommunikation zwischen browser und webseite zu sniffen und die gleichen header zu setzen, die auch der browser setzt.

Re: Java: Webseiten einlesen klappt unzuverlässig

von Jo » 23 Jun 2010, 17:11

Danke, werde ich mal gucken. Ich hatte bisher nicht solche Probleme, deshalb habe ich es immer so gemacht wie in den Beispiel-Parsern.

Re: Java: Webseiten einlesen klappt unzuverlässig

von uzi » 23 Jun 2010, 14:22

ich glaube ehrlich gesagt nicht, dass nio da irgendwas ändert. ich persönlich habe allerdings schon seit ewigkeiten keine webseiten mehr 'zu fuß' eingelesen, sondern nutze für sowas den apache http client: http://hc.apache.org/httpcomponents-cli ... index.html. ich habe jetzt leider gerade keinen zugriff auf mein eclipse, aber ich denke mal, dass das wirschauen-plugin richtung omdb auch den http client benutzt. da kannst du dann vermutlich einfach abschreiben. bisher hatte ich da jedenfalls bzgl robustheit keine probleme.

[edit] guckst du hier: http://tvbrowser.svn.sourceforge.net/vi ... iew=markup

Re: Java: Webseiten einlesen klappt unzuverlässig

von AlexG » 20 Jun 2010, 08:03

Schau dir mal Java NIO an. Kannst für den Inhalt einen eigenen Codec schreiben und den Stream besser kontrollieren.

Java: Webseiten einlesen klappt unzuverlässig

von Jo » 18 Jun 2010, 19:28

Ich habe folgenden Code, bei dem bis zu 20x versucht wird, den Inhalt einer Webseite zu bekommen. Wenn ich das laufen lasse zeigt sich, dass tatsächlich bis zu 15 Anläufe nötig sind, bis das klappt. Wenn ich die Seiten mit dem Browser aufrufe, gibt es die Probleme aber nicht. Was muss ich ändern, damit das besser funktioniert?

Code: Alles auswählen

  public static String getUrlContent(String strUrl) throws MalformedURLException,
  IOException {
    try {
      Thread.sleep(500);
    } catch (InterruptedException e) {

    }

    String retval = "";
    String line = null;
    int versuche = 1;
    BufferedReader reader = null;
    
    while (versuche <= 20) {
      System.out.println("getUrlContent:"+strUrl);
      URL url = new URL(strUrl);

      HttpURLConnection con = (HttpURLConnection) url.openConnection();
      InputStream in = con.getInputStream();

      InputStreamReader inReader = new InputStreamReader(in);
      reader = new BufferedReader(inReader);
            
      if (reader.ready()) {
        break;
      }
      versuche++;
      try {
        System.out.println("PAUSE, Try Nr. "+versuche);
        Thread.sleep(4000);
      } catch (InterruptedException e) {

      }
    }
   
   StringBuffer content = new StringBuffer();

   line = reader.readLine();
 
   while (line != null) {
      content.append(line + "\n");
      line = reader.readLine();
    }
    retval = content.toString();

    return retval;
  }

Nach oben