Ich möchte in der Lage sein, das HTML einer Webseite abzurufen und in einem zu speichern String
, damit ich etwas daran verarbeiten kann. Wie könnte ich mit verschiedenen Arten der Komprimierung umgehen?
Wie würde ich das mit Java machen?
java
http
compression
jjnguy
quelle
quelle
Antworten:
Hier ist ein getesteter Code, der die URL- Klasse von Java verwendet . Ich würde jedoch empfehlen, die Ausnahmen besser zu behandeln als hier, oder sie an den Aufrufstapel weiterzuleiten.
quelle
DataInputStream
durchBufferedReader
. Und ersetzen Sie"dis = new DataInputStream(new BufferedInputStream(is));"
zu"dis = new BufferedReader(new InputStreamReader(is));"
InputStreamReader
?Ich würde einen anständigen HTML-Parser wie Jsoup verwenden . Es ist dann so einfach wie:
Es verarbeitet GZIP- und Chunked-Antworten sowie die Zeichencodierung vollständig transparent. Es bietet auch weitere Vorteile, wie das Durchlaufen und Bearbeiten von HTML durch CSS-Selektoren, wie es jQuery tun kann. Sie müssen es nur als
Document
, nicht alsString
.Sie möchten wirklich keine grundlegenden String-Methoden ausführen oder sogar HTML-Dateien regulieren, um sie zu verarbeiten.
Siehe auch:
quelle
;)
NetworkOnMainThreadException
Bills Antwort ist sehr gut, aber Sie möchten möglicherweise einige Dinge mit der Anfrage tun, wie z. B. Komprimierung oder Benutzeragenten. Der folgende Code zeigt, wie Sie verschiedene Arten der Komprimierung Ihrer Anforderungen durchführen können.
Um auch den Benutzeragenten festzulegen, fügen Sie den folgenden Code hinzu:
quelle
Nun, Sie könnten mit den eingebauten Bibliotheken wie URL und URLConnection arbeiten , aber sie geben nicht viel Kontrolle.
Persönlich würde ich mit der Apache HTTPClient- Bibliothek gehen.Bearbeiten: HTTPClient wurde von Apache auf Lebensende gesetzt. Der Ersatz lautet: HTTP-Komponenten
quelle
Bei allen oben genannten Ansätzen wird der Webseitentext nicht so heruntergeladen, wie er im Browser angezeigt wird. Heutzutage werden viele Daten über Skripte in HTML-Seiten in Browser geladen. Keine der oben genannten Techniken unterstützt Skripte. Sie laden nur den HTML-Text herunter. HTMLUNIT unterstützt die Javascripts. Wenn Sie also den Webseitentext so herunterladen möchten, wie er im Browser angezeigt wird, sollten Sie HTMLUNIT verwenden .
quelle
Sie müssten höchstwahrscheinlich Code von einer sicheren Webseite (https-Protokoll) extrahieren. Im folgenden Beispiel wird die HTML-Datei in c: \ temp \ filename.html gespeichert. Viel Spaß!
quelle
Auf einer Unix / Linux-Box könnten Sie einfach 'wget' ausführen, aber dies ist keine Option, wenn Sie einen plattformübergreifenden Client schreiben. Dies setzt natürlich voraus, dass Sie mit den heruntergeladenen Daten zwischen dem Herunterladen und dem Auftreffen auf die Festplatte nicht wirklich viel anfangen möchten.
quelle
Jetty verfügt über einen HTTP-Client, mit dem eine Webseite heruntergeladen werden kann.
Das Beispiel druckt den Inhalt einer einfachen Webseite.
In einem Tutorial zum Lesen einer Webseite in Java habe ich sechs Beispiele für das Herunterladen einer Webseite programmgesteuert in Java unter Verwendung von URL, JSoup, HtmlCleaner, Apache HttpClient, Jetty HttpClient und HtmlUnit geschrieben.
quelle
Holen Sie sich Hilfe von dieser Klasse, sie erhält Code und filtert einige Informationen.
quelle
Verwenden Sie dazu NIO.2 leistungsstarke Files.copy (InputStream in, Pfadziel):
quelle
quelle