Quelltext aus Webseiten auslesen (Java): Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
K
 
(9 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
Wenn man Webseiten bearbeiten oder parsen möchte, muss zunächst der Quelltext der Webseite geholt werden. Dazu wird ein Stream zur Datenquelle erzeugt.
 
Wenn man Webseiten bearbeiten oder parsen möchte, muss zunächst der Quelltext der Webseite geholt werden. Dazu wird ein Stream zur Datenquelle erzeugt.
 
Es gibt mehrere Möglichkeiten, den Quelltext aus einem Stream in den Speicher einzulesen. Z.B. stehen uns hier die Klassen {{JAPI|Scanner}} oder {{JAPI|BufferedReader}} zur Verfügung.
 
Es gibt mehrere Möglichkeiten, den Quelltext aus einem Stream in den Speicher einzulesen. Z.B. stehen uns hier die Klassen {{JAPI|Scanner}} oder {{JAPI|BufferedReader}} zur Verfügung.
Welche davon genutzt wird, hängt z.T. von den persönlichen Vorlieben, von der Ziel-JRE, oder den angebotenen Methoden ab.
+
Welche davon genutzt wird, hängt z.T. von den persönlichen Vorlieben, von der Ziel-JRE, oder den benötigten Methoden ab.
  
<code=java>
+
==Auf das Wesentliche reduziert==
 +
<syntaxhighlight lang="java">
 
URL url = new URL("http://www.byte-welt.net");
 
URL url = new URL("http://www.byte-welt.net");
 
Scanner scanner = new Scanner(new InputStreamReader(url.openStream()));
 
Scanner scanner = new Scanner(new InputStreamReader(url.openStream()));
</code=java>
+
</syntaxhighlight>
 
Damit ist ein Stream zur Index-Seite von Byte-Welt geöffnet, aus dem wir nun den Textinhalt der Webseite (also HTML-Text, nicht der PHP-Code) lesen können.
 
Damit ist ein Stream zur Index-Seite von Byte-Welt geöffnet, aus dem wir nun den Textinhalt der Webseite (also HTML-Text, nicht der PHP-Code) lesen können.
  
<code=java>
+
<syntaxhighlight lang="java">
 
JTextArea ta = new JTextArea();
 
JTextArea ta = new JTextArea();
while(scanner.hasNext()) {
+
while(scanner.hasNextLine()) {
   ta.append(scanner.nextLine()+"\n");
+
   ta.append(scanner.nextLine()+"\n\r");
 
}
 
}
  
 
add(new JScrollPane(ta);
 
add(new JScrollPane(ta);
</code=java>
+
</syntaxhighlight>
In diesem Beispiel würden wir den ausgelesenen Quelltext in einer JTextArea ausgeben.
+
In diesem Beispiel würden wir den ausgelesenen Quelltext in einer {{JAPI|JTextArea}} ausgeben.
  
[[Kategorie:Java]]
+
==Ein Beispiel-Programm==
 +
[[Webseiten herunterladen und speichern]]
 +
 
 +
[[Kategorie:Java-Codeschnipsel]]

Aktuelle Version vom 14. Mai 2020, 14:01 Uhr

Wenn man Webseiten bearbeiten oder parsen möchte, muss zunächst der Quelltext der Webseite geholt werden. Dazu wird ein Stream zur Datenquelle erzeugt. Es gibt mehrere Möglichkeiten, den Quelltext aus einem Stream in den Speicher einzulesen. Z.B. stehen uns hier die Klassen Scanner oder BufferedReader zur Verfügung. Welche davon genutzt wird, hängt z.T. von den persönlichen Vorlieben, von der Ziel-JRE, oder den benötigten Methoden ab.

Auf das Wesentliche reduziert

URL url = new URL("http://www.byte-welt.net");
Scanner scanner = new Scanner(new InputStreamReader(url.openStream()));

Damit ist ein Stream zur Index-Seite von Byte-Welt geöffnet, aus dem wir nun den Textinhalt der Webseite (also HTML-Text, nicht der PHP-Code) lesen können.

JTextArea ta = new JTextArea();
while(scanner.hasNextLine()) {
   ta.append(scanner.nextLine()+"\n\r");
}

add(new JScrollPane(ta);

In diesem Beispiel würden wir den ausgelesenen Quelltext in einer JTextArea ausgeben.

Ein Beispiel-Programm

Webseiten herunterladen und speichern