..nicht angesprungen.
Hallo erstmal, ich bin hier neu (schreib an der passenden Stelle wohl auch noch etwas), aber das o. a. Thema lässt mir seit Tagen keine Ruhe.
Ich bin quasi ein typischer Umsteiger von VBA (bis MS Access 2016) auf VB (.net), dabei hab ich schon festgestellt, dass das fast zwei unterschiedliche Welten sind, wobei ich mir hinsichtlich MS Access VBA nur noch selten etwas neues erzählen lassen muss.
Meine derzeitige Herausforderung ist es, aus einem Web-Auftritt die Haupt- und Unterseiten nach Links durchzuforsten und diese dann auf Funktion prüfen (ob ok, 403, 404, timeout usw. usf.), nach dem Umzug des dazugehörigen Forums laufen sehr viele Links ins Leere, und Google mag das garnicht und straft das gnadenlos ab.
Sicher, es gibt Tools, die das können, aber entweder sind die unflexibel, sehr langsam (hauptsächlich Freeware) oder aber deutlich überteuert (50 USD/Monat oder so), daher stelle ich mich dieser Herausforderung.
Zunächst sollen alle Links zu htm, Bildern Videos usw. gefunden und zwischengespeichert und dann der reihe nach getestet werden, eine Grundkonstrukt speziell für letzteres habe ich schon.
Ich bin an der Stelle, wo ich die Hauptseite (Outerhtml) erfolgreich nach Links durchsucht und diese in einem Array gespeichert habe.
Und jetzt komme ich nicht weiter.
Ich will nun auf die Seiten dieser gespeicherten Links navigieren und stoße mir dabei die Nase, hier der Beispielcode, reduziert auf die maßgeblichen Zeilen (fett), mit erklärenden Kommentaren, wo nötig:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'''''''''''' Button, der angeklickt wird, nachdem die Hauptseite (http:www.hauptseite.de) gefunden und ausgelesen wurde
Dim...
.
.
.
.
For...
'''''''''''' hier soll nun das Array mit den zwischengespeicherten Links verarbeitet werden (Links in
'''''''''''' Unterseiten finden und ihrerseits speichern)
.
.
Folge_Gesamt_Link_Text_ = URL_String_Array_(I1_)
'''''''''''' mit der foldenden Sub wird die Webbrowser.Navigate-Methode angestoßen, und dann kommt's, was mir
'''''''''''' Kopfzerbrechen verursacht
Sub_Folge_Url_navigieren_(Folge_Gesamt_Link_Text_)
'''''''''''' wenn der folgende Exit Sub aktiv ist, also nicht auskommentiert, wird zunächst die obige Sub
'''''''''''' verarbeitet, nach dem Exit Sub verlässt das Prog die Sub natürlich, springt dann auch die Sub's
'''''''''''' Navigated und DocumentCompletedan, ich kann dann im Formular im zweiten Webbrowser-Fenster die
'''''''''''' Seite im Formular sehen
Exit Sub
'''''''''''' eigentlich soll es hier weitergehen, also Unterwebseite ebenfalls nach Links durchsuchen, also
'''''''''''' weiter ohne den Exit Sub (den ich dann auskommentiert habe). Und genau das klappt nicht: Nach der
'''''''''''' Verarbeitung der vorigen Sub läuft das Programm weiter ohne die weiteren Sub's, also Navigated
'''''''''''' usw. zu durchlaufen
<eigentlich nächste Function...>
Next...
.
.
.
End Sub
Private Sub Web_Url1_Navigated(sender As Object, e As WebBrowserNavigatedEventArgs) Handles Web_Url1.Navigated
Url1_Eingabe.Text = Web_Url1.Url.ToString()
End Sub
Private Sub Web_Url1_Navigated(sender As Object, e As WebBrowserNavigatedEventArgs) Handles Web_Url1.Navigated
Url1_Eingabe.Text = Web_Url1.Url.ToString()
End Sub
Private Sub Web_Url1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles Web_Url1.DocumentCompleted
AddHandler CType(sender, WebBrowser).Document.Window.Error,
AddressOf Window_Error
End Sub
Was mache ich falsch? Was übersehe ich? Normalerweise finde ich als routinierter Programmierer stets eine Lösung, aber speziell zu diesem Thema habe ich bislang nicht einmal gleiche oder ähnliche Fragen/Antworten gefunden.
Vielleicht weiß hier ja jemand weiter? |