Bibliothek zum Lesen von Webseiten gesucht

Ich suche eine Bibliothek, die sich um das Einlesen von Webseiten, die Behandlung des Encodings und den Umgang mit Redirects kümmert.

Ein Kollege, der mit C# programmiert, nutzt dafür den Xizmark.Webber.

Kann mir jemand etwas passendes empfehlen?

Ganz rudimentär geht das auch mit Java-Bordmitteln:

    URL url = new URL(website);
    Scanner scanner = new Scanner(new InputStreamReader(url.openStream()));

    List<String> lines = new ArrayList<>();
    while (scanner.hasNextLine()) {
        lines.add(scanner.nextLine());
    }

    scanner.close();

    return lines;

aber eben ohne Berücksichtigung von Encoding und Redirects. Da ich sicher nicht der erste mit dem Anliegen in Java bin, gibt es ja bestimmt irgendwelche schlauen Lösungen dafür. Beim Googlen habe ich aber nichts passendes gefunden. Vermutlich würde ich es, wüsste ich schon die richtigen Suchbegriffe. So findet er alles mögliche, “Website” “Html” etc. hat eben mit jeder Webseite zu tun.

Einlesen geht sehr gut mit JSoup. Zu Redirect und Co kann ich da aus Erfahrungen nichts sagen, ich habe mir damit aber schon mehrere Webcrawler geschrieben, die API ist solide

1 „Gefällt mir“

Danke, die schaue ich mir schonmal an.

Edit: Das scheint ja eine ganze Reihe von Sachen zu machen (die ich hier und jetzt gar nicht brauche). Das macht nichts, wenn es das kann, was ich brauche. Das wäre:

  • Redirects folgen (auch mehreren)
  • Abspeichern der Webseite als HTML (komplett) in einem vorgegebenen Encoding

Die ganzen eleganten Methoden zum Extrahieren über CSS etc. benötige ich im Moment gar nicht, aber diese beiden Dinge sind essentiell.

Interessante Links zu JSoup:

Deine Vorgaben hören sich so an, als ließen sie sich hervorragend mit dem Apache HttpClient umsetzen.
Meta-Redirects unterstützt es nicht ootb, aber die Http-Redirects kann man berücksichtigen lassen.

1 „Gefällt mir“

Ich bin jetzt bei der Suche nach redirect gerade hierauf gestoßen:

Ah das überschneidet sich mit deiner Antwort @cmrudolph.

Der in Java enthaltene sun.net.www.http.HttpClient ist vermutlich etwas anderes?

Apache HttpClient:

https://hc.apache.org/httpcomponents-client-ga/index.html

Kleine Rückmeldung: Inzwischen benutze ich beide Bibliotheken. Ich lade die Webseiten mit Apaches HttpClient herunter und ich analysiere die Inhalte dann mit Jsoup. klappt sehr gut.

Hallo Crian,

danke für das Feedback. Nur aus Neugierde, bedeutet das, dass JSoup keinen Redirects folgen kann?

Viele Grüße
Tim

Das will ich nicht behaupten. Aber auf die Kombination der beiden traf ich beim Googeln bereits auch schon. Ich war froh, dass das Encoding-Problem und das Redirect-Problem gelöst waren. Ich habe aber auch bei Jsoup Konsturktoren gesehen, denen man ein Encoding mitgeben kann.

Wollte ich rein auf Jsoup setzen, müsste ich ganz von vorn austesten, was es tut, wie es sich verhält. Bei Apaches HttpClient habe ich gerade zur Redirect-Behandlung schon einige Quellen gefunden.

1 „Gefällt mir“