G
gast
Gast
hi leute ich habe folgendes problem.
ich möchte in meinem programm eine url eingeben und von dieser wird dann der quelltext gespeichert. außerdem sollen die links auf dieser seite verfolgt werden und auch die nächsten seiten gespeichert werden. das läuft erstma aber nur bis zur ersten ebene, doch das ganze soll bis zu einer bestimmten tiefe passieren, die man als benutzer eingeben kann. da hackt es bei mir!!!
habt ihr vielleicht einen ansatz für.
schonma danke im vorraus.
hier noch mein code:
ich möchte in meinem programm eine url eingeben und von dieser wird dann der quelltext gespeichert. außerdem sollen die links auf dieser seite verfolgt werden und auch die nächsten seiten gespeichert werden. das läuft erstma aber nur bis zur ersten ebene, doch das ganze soll bis zu einer bestimmten tiefe passieren, die man als benutzer eingeben kann. da hackt es bei mir!!!
habt ihr vielleicht einen ansatz für.
schonma danke im vorraus.
hier noch mein code:
Code:
import inout.in;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.*;
public class quellespeichern {
public String URL;
public quellespeichern() {
leseSeite();
}
public Vector leseUrl(String url) {
// Eingabe der Internetseite
URL = url;
String zeile = null;
String datei = "";
try {
// erstellen der URL
URL myurl = new URL(URL);
try {
// Zugriff auf URL und auslesen dieser bis zeile gleich null
BufferedReader lies = new BufferedReader(new InputStreamReader(myurl.openStream()));
while ((zeile = lies.readLine()) != null) {
datei += zeile;
}
}
catch (IOException ex2) {
System.out.println("FEHLER beim Zugriff: " + ex2.getMessage());
}
}
catch (MalformedURLException ex) {
System.out.println("FEHLER bei der URL " + ex.getMessage());
}
// speichern des Quelltextes in einer Textdatei
Writer fw = null;
try
{
// Pfad und Eingabe des Dateinamens
fw = new FileWriter( "C:\\Dokumente und Einstellungen\\mleh\\" + in.readString("Bitte Dateinamen eingeben: ") + ".txt");
fw.write(datei);
}
catch ( IOException e ) {
System.err.println( "Konnte Datei nicht erstellen" );
}
finally {
if ( fw != null )
try { fw.close(); } catch ( IOException e ) { }
}
// Zugriff auf gespeicherten Quelltext und auslesen der Links
Vector links = new Vector(getLinks(datei));
for ( int i = 0; i < links.size(); i++) {
// Ausgabe der Links
System.out.println(links.elementAt(i));
}
return links;
}
public void leseSeite() {
String url = in.readString("Bitte URL eingeben:");
Vector links = leseUrl(url);
for (int i=0; i<links.size(); i++) {
url = (String) links.get(i);
leseUrl(url);
}
}
// Links
public static final String REGEX = "(http[s]?|ftp)://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?";
public static Vector getLinks(String input) {
Pattern p = Pattern.compile(REGEX, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(input);
Vector items = new Vector();
while (m.find()) {
items.addElement(m.group());
}
return items;
}
public static void main(String[] args) {
System.getProperties().setProperty("proxySet","true");
System.getProperties().setProperty("proxyHost","proxy");
System.getProperties().setProperty("proxyPort","8080");
new quellespeichern();
}
}