wie gesagt möchte ich robots.txt-Dateien mit Regulären-Ausdrücken durchsuchen. Habe da schon etwas gebastelt, aber leider funktioniert es nicht zu 100%:
Eine klassiche robots.txt:
Code: Alles auswählen
User-agent: *
Disallow: /verzeichnis1/
Disallow: /verzeichnis2/
Code: Alles auswählen
regex = re.compile("user-agent\s*:\s*\*(?:\s*disallow\s*:\s*(.*))*", re.IGNORECASE)
print regex.search(robots_txt).groups()
- Zunächst nach "user-agent"
- Gefolgt von 0 oder mehreren Leerzeichen/Tabs
- Dann der Doppelpunkt (:)
- Gefolgt von 0 oder mehreren Leerzeichen/Tabs
- Dann kommt der * (Der Stern steht in der robots.txt für jeden Roboter)
(Soweit funktioniert alles wie es soll)
(Hier folgen jetzt in der Regel ein oder mehrere Zeilenumbrüche...)
- Als nächstes wird nach 0 oder mehreren Leerzeichen gesucht
- Jetzt wird nach "disallow" gesucht
- Wieder 0 oder mehr Leerzeichen
- Wieder Doppelpunkt (:)
- Wieder 0 oder mehr Leerzeichen
- jetzt Kommt endlich der Verzeichnisname. Dieser steht in Klammern, da ich im Endeffekt nur eine Liste der Verzeichnisse haben möchte.
Theoretisch funktioniert das Suchmuster. Mein einziges Problem ist, dass ich immer nur den letzten Verzeichnisnamen bekomme und sonst keine. Ich dachte eigentlich, dass ich das mit dem * am Ende lösen könnte, aber das funktioniert nicht.
Bin für jede Hilfe dankbar. Wenn was unklar ist, einfach fragen...
Danke und vg to.ni