ich durchsuche eine Internetseite nach links und verfolge diese, falls ich einen link schon einmal besucht habe, soll die rekursion abbrechen bzw. mit dem nächten link weiter machen.
So ungefähr :
1. hole ich alle links von einer bestimmten Seite
dann nehme ich den nächsten link und folge diesem
hole dann wieder von dieser Seite alle Links folge dem ersten usw.
wenn jetzt eben schon ein Link besucht wurde soll er den nächsten link von der seite nehmen
Vielleicht liegt die Lösung ja schon vor mir aber ich seh sie im Moment nicht mehr
Code:
private Back_Erg gefundener_link (NodeList nliste)
{
SimpleNodeIterator snix;
LinkTag myTag;
NodeList klist;
int zaehl = 1;
erg = new Back_Erg();
int aufgerufen = 0;
if (erg.get_gef() != 1) // vorher war ne while da
{
/*für jedes Element in der Liste*/
for (snix = nliste.elements(); snix.hasMoreNodes();)
{
myTag = (LinkTag)snix.nextNode();
System.out.println("getLink:" + myTag.getLink() + "-----");
/*durchlaufe die schleife für die Anzahl der bisher
* durchlaufenen Links */
while (zaehl < i)
{
/* überprüfe für ob der Link schon einmal durchlaufen worden ist*/
if(alleKnoten[zaehl] == myTag.getLink() && alleKnoten[zaehl] != null)
{
try
{
klist = links_holen(new URL (myTag.getLink()),new NodeClassFilter(LinkTag.class));
System.out.println("bereits vorhanden");
aufgerufen = 1;
erg = gefundener_link(klist);
} catch (MalformedURLException e)
{
e.printStackTrace();
}
}//endeif
zaehl = zaehl + 1;
}//ende while
if (aufgerufen != 1)
{
alleKnoten[i] = myTag.getLink();
i = i + 1;
try
{ /*holle alle Links von der Seite */
klist = links_holen(new URL (myTag.getLink()),new NodeClassFilter(LinkTag.class));
System.out.println("nichts gefunden");
erg = gefundener_link(klist);
} catch (MalformedURLException e)
{
e.printStackTrace();
}
}
}// ende for
}//ende if //ende while
return erg;
}//ende FUNKTION
kann es sein, dass mit meiner Abbruchbedingung auch noch was nicht stimmt? Ich glaub ich verkopf mich grad.