Mit Java eine HTML-Seite speichern

M

Martin92

Gast
Hallo,

ich will eine HTML-Seite aufrufen und diese speichern. Der genaue Link zu der Seite ist bekannt. Habt ihr irgendwelche Vorschläge, wie ich das am Besten machen kann?

Gruß
Martin
 
M

Martin92

Gast
Hallo,

danke für deine Antwort. Es klappt so. Nur jetzt habe ich ein anderes Problem: Ich kann den gesamten Quellcode der HTML-Seite nicht in einen String speichern. Ich brauche es um später mit regulären Ausdrücken etwas darin zu suchen.

Java:
URL myurl = new URL("http://www.google.de");
        URLConnection con = myurl.openConnection();
        Scanner scanner = new Scanner(myurl.openStream());
        
        
        String temp = "";
        while(scanner.hasNextLine()){
            temp.concat(scanner.nextLine());
        }
        
        System.out.println(temp);

Der String enthält keine Zeichen. Wo könnte der Fehler sein oder habe ich einen falschen Ansatz?
 
M

Marcinek

Gast
Strings sind unveränderlich.

temp.concat() gibt dir den konkatinierten String zurück.
 
G

Gast2

Gast
Strings sind immutable. concat liefert einen neuen String zurück den du ignorierst. Nimm für sowas aber lieber nen StringBuilder.
 
M

Martin92

Gast
Der enthält aber keine Zeichen. Darin liegt mein Problem.

[EDIT]ok, mache ich. deine antwort habe ich erst später gesehen.

danke, jetzt klappt es! :)[/EDIT]
 

GUI-Programmer

Top Contributor
Nun die Fortsetzung. Auf dieser Art und Weise lässt sich zwar der gesamte Quellcode (HTML) einer Website auslesen, allerdings, wenn man diesen dann anzeigen lässt im Browser, sind die ganzen Bilder weg - warum? Daher meine Frage: Gibt es eine bessere Möglichkeit? Oder warum erscheinen manche Dinge aus einer .html Datei anders als in der echten Website?

Code:
Java:
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.File;

public class WebsiteSaver {
	public static void main(String[] args) throws Exception{
		if(args.length == 2) {
			URL url = new URL(args[0]);
			URLConnection con = url.openConnection();
			Scanner scanner = new Scanner(url.openStream());
			StringBuilder builder = new StringBuilder();
			while(scanner.hasNextLine()){
				builder.append(scanner.nextLine());
				builder.append(System.getProperty("line.separator"));
			}
			
			File file = new File(args[1]);
			file.createNewFile();
			BufferedWriter writer = new BufferedWriter(new FileWriter(file));
			writer.write(builder.toString());
			writer.flush();
			writer.close();
		}
	}
}

Test:
Code:
java WebsiteSaver [noparse]http://www.java-forum.org/[/noparse] JavaForum.html
 
Zuletzt bearbeitet von einem Moderator:

L-ectron-X

Gesperrter Benutzer
Daher meine Frage: Gibt es eine bessere Möglichkeit? Oder warum erscheinen manche Dinge aus einer .html Datei anders als in der echten Website?
Weil die URLs zu den Images in der Originalseite relativ notiert sind.
Wenn das Ganze auch bei dir lokal laufen soll. musst du die relative URL in absolute umwandeln, also noch das [noparse]http://www.java-forum.org/[/noparse] davor setzen.
Oder wenn du die Site rippen willst, auch die Images herunter laden und in gleichnamigen Verzeichnissen wie im Original ablegen.
 

GUI-Programmer

Top Contributor
Wenn das Ganze auch bei dir lokal laufen soll. musst du die relative URL in absolute umwandeln, also noch das Java programmieren aus Leidenschaft davor setzen.

OK, doch woher weis ich, bei welchen src = ich das machen muss, denn schließlich kann es ja auch vorkommen, das die Bilder von einer anderen Website herstammen???
[EDIT]
Oh, mir ist beim Schreiben gerade aufgefallen, dass ich prüfen könnte, ob es nach src mit http: bzw. https, etc. weiter geht.
[/EDIT]
 

GUI-Programmer

Top Contributor
So, hab jetzt schon eine Lösung:
Java:
import java.net.URL;
import java.util.Scanner;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.File;

public class WebsiteSaver {
	public static void main(String[] args) throws Exception{
		if(args.length == 2) {
			URL url = new URL(args[0]);
			url.openConnection();
			Scanner scanner = new Scanner(url.openStream());
			StringBuilder builder1 = new StringBuilder();
			while(scanner.hasNextLine()){
				builder1.append(scanner.nextLine());
				builder1.append(System.getProperty("line.separator"));
			}
			
			String text = builder1.toString();
			int index = -1;
			while((index = text.indexOf("src=", index+1)) != -1) {
				String value = text.substring(index+5, index+11);
				if(!value.contains("http:") && !value.contains("https:")) {
					StringBuilder builder2 = new StringBuilder();
					builder2.append(text.substring(0, index+5));
					builder2.append(args[0]);
					builder2.append(text.substring(index+5, text.length()-1));
					text = builder2.toString();
				}
			}
			
			
			File file = new File(args[1]);
			file.createNewFile();
			BufferedWriter writer = new BufferedWriter(new FileWriter(file));
			writer.write(text);
			writer.flush();
			writer.close();
		}
	}
}

Nun dazu noch eine Frage: Sollt ich noch nach etwas anderen außer "http" und "https" suchen? Bzw. gibts da noch was anderes???
 

GUI-Programmer

Top Contributor
Ist wohl doch nicht so leicht, wie zuerst angenommen. Folgende Probleme gibt es noch zu lösen:

1. Dass sich die Pfade teilweise relativ zu "Haupt-Website" beziehen, und nicht zu der Page, von welchem man das Abbild möchte
2. Dass es unterschiedliche Art und Weisen gibt, wie man ein Bild relativ einbindet, sprich z.B einfach:
HTML:
src="images/Testbild.jpg"
src="/image/Tesbild.jpg"
src="../Testbild.jpg"

Vielleicht kann ja hier jemand weiterhelfen und evtl. meinen Code etw. modifizieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Java Object das eine HTML Datei repräsentiert Java Basics - Anfänger-Themen 19
3 Eine HTML Datei in eine Java Datei umschreiben Java Basics - Anfänger-Themen 23
N Per Java in ein HTML-Suchfeld eine Variable reinschreiben Java Basics - Anfänger-Themen 4
T Eine HTML Datei mit Java bear. Wie soll kann man anfangen? Java Basics - Anfänger-Themen 11
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
C Methoden Java ist auch eine Insel Listing 2.40 Recursion Java Basics - Anfänger-Themen 7
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
C Java liest nur eine Zeile ein Java Basics - Anfänger-Themen 3
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
F Erste Schritte Java ist auch eine Insel kaufen? Java Basics - Anfänger-Themen 2
B Hilfe bei eine Java-Methode Java Basics - Anfänger-Themen 4
M Erste Schritte Java prüfen ob eine der Möglichkeiten erfüllt ist Java Basics - Anfänger-Themen 2
W Wie kann ich in Java eine Kurve aus Punkten zeichnen? Java Basics - Anfänger-Themen 25
1 Im Java Projekt eine txt datei einbinden? Java Basics - Anfänger-Themen 8
A Hat jemand einen ratschlag, wie java beim replaceALL eine geschweifte klammer erkennt ? Java Basics - Anfänger-Themen 5
D Java erkennt eine deklarierte Variable nicht Java Basics - Anfänger-Themen 2
I Java Eingabe aus einer anderen Klasse in eine andere an Konstruktor übergeben Java Basics - Anfänger-Themen 4
D Türme von Hanoi in "Java ist auch eine Insel" Java Basics - Anfänger-Themen 4
J für eine java klausur Java Basics - Anfänger-Themen 5
Y Wie setze ich genau eine Stückliste (UML) in Java um? Java Basics - Anfänger-Themen 9
S mit Java eine EXE im vordergrund ausführen Java Basics - Anfänger-Themen 3
N Java UML: Eine Frage zu public-Variablen Java Basics - Anfänger-Themen 19
I Variablen Wie initialisiert man in Java eine Variable ohne das Setzen von 0 oder einer anderen Zahl? Java Basics - Anfänger-Themen 8
DaniSahne96 Frage zu Java ist auch eine Insel Java Basics - Anfänger-Themen 12
V Mit JS eine JAVA Methode aufrufen Java Basics - Anfänger-Themen 5
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
J Geldberechner(aus Java ist auch eine Insel) Java Basics - Anfänger-Themen 6
G Erste Schritte JAVA ist auch eine Insel Java Basics - Anfänger-Themen 7
A Wie mit Java eine .vbs Datei starten lassen? Java Basics - Anfänger-Themen 4
A Eine Frage zu AWt in JAVA, wie wähle ich ein Punkt aus`? Java Basics - Anfänger-Themen 4
M Was ist genau eine Abstraktion in java Java Basics - Anfänger-Themen 3
H Reflexion: Eine Methode, beliebig viele Parameter (Java 1.4.2) Java Basics - Anfänger-Themen 8
T Java Webstart soll eine Datei speichern Java Basics - Anfänger-Themen 2
C Aus Java eine Javascript Funktion aufrufen Java Basics - Anfänger-Themen 14
T Frage aus dem Buch JAVA ist auch eine Insel Java Basics - Anfänger-Themen 11
M Spielt der Debugger bei java eine große Rolle Java Basics - Anfänger-Themen 3
M Aus wieviel Klassen darf in Java eine (Programm)besitzen? Java Basics - Anfänger-Themen 21
2 Mit Java in eine WORD-Datei schreiben Java Basics - Anfänger-Themen 18
X Via Java auf eine Webseite einloggen. Java Basics - Anfänger-Themen 6
R Java, Bluetooth: mit PC eine SPP Verbindung aufbauen Java Basics - Anfänger-Themen 1
schroedi Wie startet man eine JAVA EE Projekt Java Basics - Anfänger-Themen 22
S Codebeispiel aus Java ist auch eine Insel. Java Basics - Anfänger-Themen 2
J Ein Java-Programm in eine *.exe Datei 'packen' Java Basics - Anfänger-Themen 20
G Eine HP mit Java läuft nicht Java Basics - Anfänger-Themen 4
J Aus einem Java Programm eine .java datei Kompilieren Java Basics - Anfänger-Themen 6
G Java Klasse durch eine andere Java Klasse starten? Java Basics - Anfänger-Themen 13
M Java Quellcode in eine exe datei umwandeln Java Basics - Anfänger-Themen 4
W Klasse in eine extra Java-Datei Java Basics - Anfänger-Themen 21
M Mit Java eine neue DB anlegen über XAMPP? Ist das möglich ? Java Basics - Anfänger-Themen 4
V Wie kann ich mit Java eine Tastatureingabe simmulieren ? Java Basics - Anfänger-Themen 26
vogella Mit Java eine Webpage schreiben Java Basics - Anfänger-Themen 7
P mit Java auf eine PowerPoint-Präsentation zugreifen Java Basics - Anfänger-Themen 3
M Datenbankabfrage über eine Java Oberfläche Java Basics - Anfänger-Themen 3
C eine dringende bitte an alle java-programmierer Java Basics - Anfänger-Themen 4
S Daten in eine Variable in einem anderen Java File schreiben Java Basics - Anfänger-Themen 10
T Newbie Frage Eine Java Anwendung fernsteuern? Java Basics - Anfänger-Themen 4
G eine Frage zur Generic Java ? Java Basics - Anfänger-Themen 8
B Mit Java eine Website "steuern" Java Basics - Anfänger-Themen 18
A aus Java-Code eine jar-Datei ausführen Java Basics - Anfänger-Themen 8
T Java ist auch eine Insel: Beispielprogramm fehlerhaft? Java Basics - Anfänger-Themen 2
G Wie kann ich mit Java eine Textdatei auslesen? Java Basics - Anfänger-Themen 20
B Eine Linie zeichnenmit Java, ich verstehe das einfach nicht Java Basics - Anfänger-Themen 4
C Aus Java eine Email wo der Body den Inhalt aus einer .... Java Basics - Anfänger-Themen 6
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben