Servus,
zurzeit will ich einen einfachen Webspider schreiben. Die Links werden zwar gut erkannt, aber viele (nicht alle!) können nicht geladen werden, obwohl Sie existieren (URL kopiert und in Browser geladen). Die Frage ist natürlich warum. Als Test-Addresse habe ich „yahoo.de“ genommen.
Codeausschnitt (SpiderThread.java):
import java.net.URL;
import java.util.Scanner;
import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.nodes.TagNode;
import org.htmlparser.util.NodeList;
public class SpiderThread implements Runnable {
URL getUrl;
public void run(){
while(!Main.stop){
try {
if(!Main.toDo.isEmpty()){ //Main.toDo ist ArrayList mit zu ladenden URLs
String currenturl = Main.toDo.remove(0);
Main.visited.add(currenturl); //Main.visited ist ArrayList mit besuchten URLs
try {
getUrl = new URL("http://" + currenturl);
Scanner sc = new Scanner(getUrl.openStream());
String request = "";
while(sc.hasNext()){
request += sc.next();
}
try {
Parser p = Parser.createParser(request,null);
NodeList nl = p.parse(null);
System.out.println("Parsing "+currenturl);
recursiveLinkSearch(nl);
} catch(Exception e){}
} catch (Exception ex) {
System.out.println("Error loading File: "+currenturl+" ("+ex.getClass().getSimpleName()+")");
}
} else
Thread.sleep(200);
} catch (InterruptedException ex) {}
}
}
public void recursiveLinkSearch(NodeList element){
for(int i=0; i
Vielen Dank für Hilfe.
grtz
michi