C# Browser Links rekursiv auslesen

Java4life

Grünschnabel
Hi Leute,
ich schreibe gerade ein kleines Programm in C#. Es soll von einer Seite alle Links (href) herauslesen,den Links folgen und wiederum von der Seite alle Links herauslesen...
Jetzt meine Frage,wie kann ich zum Beispiel eine Suchtiefe eingeben,sodass folgende Sturktur entsteht:

Suchtiefe=3;
Startseite (1. Stufe) --> alle Links rauslesen-->Links folgen und wieder Links auslesen(2. Stufe) -->
Links folgen und wieder Links auslesen(3. Stufe).

Folgenden Code habe ich bis jetzt:

C#:
SortedSet<string> hset = new SortedSet<string>();
            foreach (HtmlElement ele in webBrowser1.Document.Links)
            {
                webBrowser1.Navigate(ele.GetAttribute("href"));
                foreach (HtmlElement ele2 in webBrowser1.Document.Links)
                {
                    hset.Add(ele2.GetAttribute("href"));
// hier komme ich auf die 2. Stufe
                }
                
            }

Wäre echt toll,falls jemand eine Idee hätte.
Mfg
 
Zuletzt bearbeitet:
Hi und Willkommen bei tutorials.de :)

Das ist ein typischer Anwendungsfall für eine Rekursion.
Mach eine Methode, die ien egegebene Website auf Links untersucht und für jeden Liunkt sich selbst wieder aufruft. Dann startest du die Methode einmal mit der Startseite. Die startet sich für jede Unterseite wieder.
Die Unterseiten starten sie für ihre Unterseiten wieder usw...

Für die Tiefenbegrenzung kannst du am Anfang die Tiefe als Zahl mitgeben, zB. 3.
Wo die Methode für die Unterseiten aufgerufen wird wird dann die Tiefe minus eins übergeben.
Und wenn die methode mit Tiefe 0 gestartet wird, sucht sie nicht mehr, sondern hört gleich wieder auf.

Brauchst du ein Codebeispiel?

Noch ein Tipp zum Forum: Statt [code][/code] kannst du auch [code=csharp][/code] nehmen. Dann wirds auch noch passend farbig.

Gruß
 
Also ein Codebeispiel wäre super! :)

Das es Rekursion ist,habe ich mir schon fast gedacht,aber ich muss auch gestehen, dass ich kein Freund davon bin bzw. man da schnell durcheinander kommt...

Danke für den Hinweis!
 
C#:
public void link_sammeln(String url, WebBrowser brows, int deep)
{
    if (deep < 1) return;
    brows.Navigate(url);
    foreach (HtmlElement ele in brows.Document.Links)
    {
         //ggf. irgendwas mit dem link in ele machen
         link_sammeln(ele.GetAttribute("href"), brpws, deep - 1);
    }
}

Gruß
 

Neue Beiträge

Zurück