Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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?
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?
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();
}
}
}
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.
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]
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: