G
GastMarkus
Gast
Hallo,
ich schreibe grade probeweise ein Programm, welches Domains innerhalb einer Domain erkennen soll, und diese dann wiederrum auch nach Domains durchsuchen soll. Leider ist die Performance miserabel.
Hab ich irgendwas grundlegend falsch gemacht?
Vielen Dank!
ich schreibe grade probeweise ein Programm, welches Domains innerhalb einer Domain erkennen soll, und diese dann wiederrum auch nach Domains durchsuchen soll. Leider ist die Performance miserabel.
Hab ich irgendwas grundlegend falsch gemacht?
Code:
import java.net.*;
import java.io.*;
import java.util.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class URLDemo
{
private ArrayList namensListe = new ArrayList();
private int zaehler = 0;
public static void main(String args[]) throws Exception
{
if (args.length != 1)
{
// Print message, pause, then exit
System.err.println ("Invalid command parameters");
System.in.read();
System.exit(0);
}
URLDemo myURLMaker = new URLDemo();
myURLMaker.start(args[0]);
}
public void start(String url)
{
domaincrawler starter = new domaincrawler();
starter.start();
starter.filterDomain(url,zaehler);
}
// Alle Domainnamen in der newurl finden
private class domaincrawler extends Thread
{
public void filterDomain(String newurl, int threadnummer)
{
Pattern pattern = Pattern.compile("www\\.([^\\.]*)\\.de");
//Pattern pattern2 = Pattern.compile('#("|\=)http://([^/\s"]*)(\.+)([A-Za-z0-9]+[^/\s"]*)\.([a-zA-Z]+[^\."/\s]{2,3})(.*)("|\s)#');
try
{
// Check to see that a command parameter was entered
// Create an URL instance
System.out.println ("Crawl #"+threadnummer+" von "+newurl+" gestartet!");
URL url = new URL(newurl);
// Get an input stream for reading
InputStream in = url.openStream();
// Create a buffered input stream for efficency
BufferedInputStream bufIn = new BufferedInputStream(in);
// Repeat until end of file
String urldata = "";
for (;;)
{
int data = bufIn.read();
// Check for EOF
if (data == -1)
break;
else
urldata += ((char) data);
}
Matcher matcher = pattern.matcher(urldata);
domaincrawler ocrawl;
while (matcher.find()) {
if(!namensListe.contains(matcher.group()))
{
zaehler++;
System.out.println (" Neue Domain ("+zaehler+") "+matcher.group());
namensListe.add(matcher.group());
ocrawl = new domaincrawler();
ocrawl.start();
ocrawl.filterDomain("http://"+matcher.group(), zaehler);
}
}
System.out.println ("Crawl #"+threadnummer+" von "+newurl+" beendet!");
}
catch (MalformedURLException mue)
{
System.err.println ("Invalid URL");
}
catch (IOException ioe)
{
System.err.println ("I/O Error - " + ioe);
}
}
}
}
Vielen Dank!