-
Notifications
You must be signed in to change notification settings - Fork 8
Benutzung
Scrape-A-RIS wird über die Kommandozeile ausgeführt. Hier wird ausführlich erklärt, wie das Programm aufgerufen werden kann und was die verschiedenen Optionen bewirken.
Für alle Aufrufe müssen wir uns als aufrufender Benutzer im Hauptverzeichnis von Scrape-A-RIS befinden. Das ist das Verzeichnis, in dem die Datei README.md
, main.py
und config.py
zu finden sind.
Wer - wie in der Installationsanleitung empfohlen - eine virtualenv Umgebung für Scrape-A-RIS eingerichtet hat, muss diese zunächst starten, bevor er/sie die nachstehenden Kommandos ausführen kann.
Angenommen, Deine virtuelle Python-Umgebung ist im Ordner venv
angelegt, dann lautet der Befehl zum Aktivieren dieser Umgebung:
$ source venv/bin/activate
Konvention: Das Dollar-Zeichen vor einer Befehlszeile gilt innerhalb dieser Anleitung nicht als Teil des Befehlsaufrufs.
Du hast die Datei config_example.py
zu config.py
kopiert und diese Datei nach bestem Wissen und Gewissen angepasst? Gut.
Wenn alle Voraussetzungen erfüllt sind, solltest Du den folgenden Aufruf ausprobieren können:
$ python main.py
Hier sollte, wenn alles in Ordnung ist, gar nichts passieren. Das heißt, im Hintergrund passiert schon etwas. Zum Beispiel wird geguckt, ob Deine Konfigurationsdatei vorhanden ist, ob die Datenbank erreichbar ist und ob das RIS, das Du später scrapen willst, gefunden werden kann. Aber es wird - sofern alles funktioniert wie erwartet - nichts ausgegeben.
Um wenigstens ein kleines bisschen Rückmeldung zu bekommen, kannst Du den -v
Parameter (für "verbose" = ausführlich) hinzufügen. Wichtig: Alle Parameter, die hier erläutert werden, müssen hinter dem Dateinamen main.py
stehen.
$ python main.py -v
Found ASP template system
Mit der verbose-Option wird die Ausgabe von Informationen im Terminal aktiviert. Ohne verbose-Option sehen wir am Terminal nur Warnungen und Fehlermeldungen, falls solche auftreten.
Scrape-A-RIS erzeugt, wie Du durch Bearbeiten der Konfigurationsdatei schon gelernt hast, auch eine Logdatei. Darin bekommst Du, unabhängig von der verbose-Option, ausführlichere Infos.
In diesem Fall erzählt Scrape-A-RIS uns, welches Template-System das kontaktierte Ratsinformationssystem nutzt. Je nach dem, welches System im Einsatz ist, kann da entweder von "PHP" oder von "ASP" die Rede sein. das ist nur dann wichtig, wenn wir mal Hand anlegen müssen an die Mechanismen, mit denen Scrape-A-RIS die Daten aus den HTML-Seiten des RIS ausliest. Wenn Du Grund hast, anzunehmen, dass Scrape-A-RIS hier mit dem gefundenen System im Irrtum ist, haben wir ein Problem und mit großer Wahrscheinlichkeit eine Fehlerquelle.
Aber gehen wir mal davon aus, dass alles stimmt, und machen wir weiter.
Wir wagen uns weiter vor. Angenommen, wir wollen eine bestimmte Vorlage aus dem Mannheimer Ratsinformationssystem scrapen. Dafür haben wir http://buergerinfo.mannheim.de/buergerinfo/
als BASE_URL in die Konfiguration eingetragen.
Eine bestimmte Vorlage im Mannheimer System hat die URL http://buergerinfo.mannheim.de/buergerinfo/vo0050.asp?__kvonr=207157&voselect=6080
. Damit probieren wir nun, ob wir tatsächlich bekommen, was wir wollen. Wir übergeben diese mit der Option --submissionurl
. Damit der Befehl an der Kommandozeile korrekt ausgeführt werden kann, verwenden wir Anführungszeichen, denn die URL enthält das zeichen &
, das sonst an der Kommandozeile eine bestimmte Funktion hat.
$ python main.py -v --submissionurl "http://buergerinfo.mannheim.de/buergerinfo/vo0050.asp?__kvonr=207157&voselect=6080"
Wenn alles stimmt, bekommen wir eine Ausgabe ähnlich wie diese hier:
Found ASP template system
Getting attachment 'V189_2013_V189_2013'
Getting attachment 'V189_2013_Anlagen_V189_2013'
Getting attachment 'V189_2013_Beschlussempfehlung_AUT_V189_2013'
New file version stored with _id 517eb90ec9791e8c06ef1800
Attachment V189_2013_V189_2013 inserted with _id 517eb90ec9791e8c06ef1803
New file version stored with _id 517eb90ec9791e8c06ef1804
Attachment V189_2013_Anlagen_V189_2013 inserted with _id 517eb90ec9791e8c06ef182b
New file version stored with _id 517eb90ec9791e8c06ef182c
Attachment V189_2013_Beschlussempfehlung_AUT_V189_2013 inserted with _id 517eb90ec9791e8c06ef182e
Submission 517eb90ec9791e8c06ef182f inserted as new
Submission 207157 stored with _id 517eb90ec9791e8c06ef182f
Das sagt uns, dass mehrere Dateianhänge (attchments) und eine Vorlage (submission) in der Datenbank gespeichert wurden. Die _id
steht für den Schlüssel, mit dem diese in der Datenbank identifiziert werden.
Für den Aufruf mit der Vorlagen-URL gibt es übrigens auch eine kürzere Schreibweise. Um die Vorlage im Ratsinformationssystem zu identifizieren, steht in der URL der Parameter __kvonr
, der Wert des Parameters ist 207157
. Verwenden wir statt --submissionurl
die Option --submissionid
, können wir einfach nur diesen Wert als Parameter übergeben.
$ python main.py -v --submissionid 207157
Beide Aufrufe würden - erstmalig ausgeführt - das gleiche Ergebnis bringen. Nun, da wir die Vorlage mit der Nummer 207157 aber schon gescrapet haben, wird beim Aufruf folgendes ausgegeben:
Found ASP template system
Getting attachment 'V189_2013_V189_2013'
Getting attachment 'V189_2013_Anlagen_V189_2013'
Getting attachment 'V189_2013_Beschlussempfehlung_AUT_V189_2013'
Attachment V189_2013_V189_2013 is already in database with _id 517eb90ec9791e8c06ef1803
Attachment V189_2013_Anlagen_V189_2013 is already in database with _id 517eb90ec9791e8c06ef182b
Attachment V189_2013_Beschlussempfehlung_AUT_V189_2013 is already in database with _id 517eb90ec9791e8c06ef182e
Submission 517eb90ec9791e8c06ef182f updated
Scrape-A-RIS merkt also, dass die Inhalte schon in der Datenbank sind. In diesem Fall werden übrigens die vorhandenen mit den neu gescrapten Inhalten verglichen. Dateien werden nur ausgetauscht, wenn sich der Inhalt geändert hat.
Was haben wir nun in der Datenbank? Wir gucken uns das über die MongoDB-Konsole in einem neuen Terminal-Fenster an.
Die MongoDB Konsole starten wir mit diesem Befehl (vorausgesetzt, MongoDB läuft auf localhost
- wovon wir hier mal ausgehen):
$ mongo
In der Mongo-Konsole wechseln wir in unsere Scrape-A-RIS Datenbank. Wir gehen hier davon aus, dass Du in Deiner Konfiguration die Einstellung DB_NAME = 'scrapearis'
belassen hast. Falls das nicht so ist, verwende hier den entsprechenden Datenbank-Namen.
> use scrapearis;
switched to db scrapearis