Mein Vorhaben.
Ich möchte einen Spider / Robot schrieben der eine Start URL ansurft und von dieser Start URL alle links herausfilter sich diese merk und dann die gefundenen links ansurft und diese nach links durchsucht. unm diese dann zu untersuchen.
nun giebt es aber volgende methoden um links anzugeben z.b. (alles nur beispiel mir sind die links nicht bekannt!)
„http://www.website.de“ oder „www.website.de“ oder auch „http://website.de“
und „./dokument.html“ oder „/dokument.html“ oder „dokument.html“ d.h
das ziel auf das sich der link bezieht liegt im selben verzeichnis wie die .html oder .php usw. datei
und „…/…/dokument.html“ d.h. das ziel auf das sich der link bezieht liegt zwei verzeichnis oberhalb wie die datei die den link enthält.
eine bessere und ausfürlichere erklärung evtl unter
http://de.selfhtml.org/html/verweise/index.htm
falls dir die html kentnisse nicht bekannt sein sollten
OK! weiter
Also müsste dein link auf der seite
„www.website.de/html/doku.html“
der „…/doku2.html“ heist
diese url ergeben „www.website.de/doku2.html“
nun habe ich die URLCombine fnk. entdekt und bekomme sie nicht zum laufen. also bin ich nun schon soweit gegangen das ich mir heute nachmittag meine eingene fn.k geschieben habe URL_Combine code siehe unten.
da dich das tehma ja nun auch gegriffen hat wäre ein feedback von dir und allen anderen natürlich auch sehr schon und weitere tipps auch.
DER CODE…
Function URL_Combine(base_url As String, hlink_url As String) As String
Dim DIR() As String
Dim DIR_Anz As Integer
Dim DIR_zaehler As Integer
Dim s_Pos As Integer
Dim e_Pos As Integer
Dim new_hlink_Anfang As Integer
Dim new_hlink_DIR As String
Dim n As Integer
'base_url muss mit http:// beginnen
If Not Left$(base_url, 7) = „http://“ Then base_url = „http://“ & base_url
'Anzahl der verzeichnisse zählen
s_Pos = 8
Do
s_Pos = InStr(s_Pos, base_url, „/“)
If Not s_Pos = 0 Then
DIR_Anz = DIR_Anz + 1
s_Pos = s_Pos + 1
End If
Loop Until s_Pos = 0
ReDim DIR(1 To DIR_Anz)
'Base_url in alle einzelnen verzeichnisse bis zum root aufteilen
s_Pos = 8
DIR_zaehler = 0
Do
e_Pos = InStr(s_Pos, base_url, „/“)
If Not e_Pos = 0 Then
DIR_zaehler = DIR_zaehler + 1
DIR(DIR_zaehler) = Mid$(base_url, s_Pos, e_Pos - s_Pos)
s_Pos = e_Pos + 1
End If
Loop Until e_Pos = 0
'liegt das ziel im selben oder einenem unter verzeichniss ( „./“ oder „/“ )
If Left$(hlink_url, 1) = „/“ Then
URL_Combine = „http://“
For n = 1 To DIR_Anz
URL_Combine = URL_Combine & DIR(n) & „/“
Next n
URL_Combine = URL_Combine & Right$(hlink_url, Len(hlink_url) - 1)
Exit Function
End If
If Left$(hlink_url, 2) = „./“ Then
URL_Combine = „http://“
For n = 1 To DIR_Anz
URL_Combine = URL_Combine & DIR(n) & „/“
Next n
URL_Combine = URL_Combine & Right$(hlink_url, Len(hlink_url) - 2)
Exit Function
End If
'SONDERFALL z.b.: hlink_url = „dokument.html“
'd.h. ziel liegt im selben verzeichnis
If Not Left$(hlink_url, 1) = „/“ Then
If Not Left$(hlink_url, 2) = „./“ Then
If Not Left$(hlink_url, 3) = „…/“ Then
If Not Left$(hlink_url, 7) = „http://“ Then
If Not Left$(hlink_url, 4) = „www.“ Then
URL_Combine = „http://“
For n = 1 To DIR_Anz
URL_Combine = URL_Combine & DIR(n) & „/“
Next n
URL_Combine = URL_Combine & hlink_url
Exit Function
End If
End If
End If
End If
End If
'NEIN das ziel ligt in einem übergeordnetem verzeichnis
'wieviel dir soll nach oben gesprungen werden
s_Pos = 1
Do
If Mid$(hlink_url, s_Pos, 3) = „…/“ Then
DIR_Anz = DIR_Anz - 1
s_Pos = s_Pos + 3
'wo beginnt der eigentliche link verweis
new_hlink_Anfang = s_Pos
Else
Exit Do
End If
Loop
If DIR_Anz