Robots.txt Parser

Eingestellt von Unknown |

Parser für Robots.txt-Dateien werden immer wieder gebraucht, sei es zum Bau eines eigenen Webcrawlers oder zur Überprüfung, ob eine Unterseite von Webcrawlern erreicht werden kann. Python bringt dafür eine eigene Klasse mit. Im Grunde ist diese sehr gut in der Dokumentation beschrieben und ich gebe hier nur das Beispiel wieder, damit ich diese nicht selber vergesse.


>>> import robotparser
>>> rp = robotparser.RobotFileParser()
>>> rp.set_url("http://forum.spiegel.de/robots.txt")
>>> rp.read()
>>> rp.can_fetch('*', "http://forum.spiegel.de/forumdisplay.php?f=5")
False


Das Script gibt im konkreter Beispiel "False" zurück, denn das Forum ist gänzlich für Suchmaschinen gesperrt.

Der Code ist eigentlich selbsterklärend. Die Funktion rp.set_url nimmt als Parameter die URL zur Robots.txt auf.

Zwei Paramenter nimmt can_fetch auf: Der erste bezieht sich auf den Crawler, der zweite auf die abzufragende URL. Das Sternchen * ist der Platzhalter für alle Crawler. Der Rückgabewert ist "True", falls der angegebene Crawler die betreffende Seite lesen darf, "False" wenn nicht.

Hier noch ein Beispiel, das vielleicht besser passt.


>>> import robotparser
>>> rp = robotparser.RobotFileParser()
>>> rp.set_url("http://www.spiegel.de/robots.txt")
>>> rp.read()
>>> rp.can_fetch("Slurp", "http://www.spiegel.de/flash/0,5532,17440,00.html")
True
>>> rp.can_fetch("WebReaper","http://www.spiegel.de/flash/0,5532,17440,00.html")
False


Slurp (Yahoo!) darf natürlich die Hauptdomain (mit Ausnahmen) durchsuchen, der Webreaper ist ausgesperrt.