marians / scrape-a-ris

Scrape-A-RIS is a scraper for assembly information systems (Ratsinformationssysteme) using Somacos SessionNet, written in Python.
9 stars 8 forks source link

für Dresden klappt es noch nicht #29

Closed RobTranquillo closed 10 years ago

RobTranquillo commented 10 years ago

Hallo, ich versuche den scraper für das Dresdner RIS klar zu kriegen. Als python noob allerdings nicht ganz einfach.

beim ersten Versuch nach Anleitung kam dies: $ python main.py │Traceback (most recent call last): │ File "main.py", line 77, in │ if config.LOG_FILE is not None: │AttributeError: 'module' object has no attribute 'LOG_FILE'

darauf hin hab ich LOG_FILE durch LOG_BASE_DIR ersetzt (Zeile 76 & 79) darauf hin startete das System und erkannte ein php environment.

Leider klappt danach keiner der 3 scrape modi (url, id, Zeitraum) wie folgende Fehler zeigen:

 % python main.py -v --submissionurl "http://ratsinfo.dresden.de/to0040.php?__ksinr=3632"
Found PHP template system
Traceback (most recent call last):
  File "main.py", line 128, in <module>
    scraper.get_submission(submission_url=options.submission_url)
  File "/home/rob/Dokumente/code/scrape-a-ris/risscraper/scraper.py", line 402, in get_submission
    submission_id = parsed['submission_id']
TypeError: 'NoneType' object has no attribute '__getitem__'
 python main.py -v --submissionid "3632"                                               
Found PHP template system
Traceback (most recent call last):
  File "main.py", line 125, in <module>
    scraper.get_submission(submission_id=int(options.submission_id))
  File "/home/rob/Dokumente/code/scrape-a-ris/risscraper/scraper.py", line 447, in get_submission
    raise TemplateError('Cannot find submission title element using XPath SUBMISSION_DETAIL_TITLE')
risscraper.scraper.TemplateError: Cannot find submission title element using XPath SUBMISSION_DETAIL_TITLE
python main.py -v --start 2014-01 --end 2014-2 -q                                                                                                                        

Found PHP template system
Traceback (most recent call last):
  File "main.py", line 148, in <module>
    scraper.find_sessions(start_date=options.start_month, end_date=options.end_month)
  File "/home/rob/Dokumente/code/scrape-a-ris/risscraper/scraper.py", line 143, in find_sessions
    self.session_queue.add(int(parsed['session_id']))
  File "/home/rob/Dokumente/code/scrape-a-ris/venv/lib/python2.7/site-packages/parse.py", line 968, in __getitem__
    return self.named[item]
KeyError: 'session_id'
marians commented 10 years ago

Erst mal zu der Fehlermeldung mit LOG_FILE: Wie hast Du Deine Konfiguration angelegt? Hast Du comfing_example.py kopiert und bearbeitet? Hast Du die LOG_FILE-Zeile noch, und wie sieht die aus?

Zu Deinem ersten Versuch mit --submissionurl: Die URL, die Du übergibst, gehört zu einer Sitzungsseite. Erwartet wird die Seite einer Vorlage (submission). Beispiel:

python main.py -v --submissionurl "http://ratsinfo.dresden.de/vo0050.php?__kvonr=8174&voselect=3632"

Im zweiten Versuch mit --submissionid übergibst Du wahrscheinlich entsprechend die URL einer Sitzung statt einer Vorlage. Versuch es hier mal mit der 8174.

python main.py -v --submissionid 8174

Die dritte Fehlermeldung deutet darauf hin, dass der String für SESSION_DETAIL_PARSE_PATTERN, der in der Konfiguration (im URLs-Dict, darin im Bereich "PHP") nicht passt. Hier kannst Du sehen, wie das in Mannheim aussieht:

https://github.com/marians/scrape-a-ris/blob/master/config/mannheim.py#L93

Auch hier wäre interessant, ob/wie Du die Konfiguration erstellt und bearbeitet hast.

RobTranquillo commented 10 years ago

Der LOG_FILE Fehler kam durch das Fehlen der entsprechende Zeile in der config. Ist gefixt:

LOGFILE = 'scrapearis%s_%s.log' % (DB_NAME, RS)

Line93 schaut bei mir noch genau so aus wie bei im repository:

Meeting detail page 'SESSION_DETAIL_PARSE_PATTERN': 'to0040.php?__ksinr={meeting_id:d}', 'SESSION_DETAIL_PRINT_PATTERN': BASE_URL + 'to0040.php?__ksinr=%d',

(Dafür sind allgemein bei mir unter php deutlich mehr Zeilen als im repository)

marians commented 10 years ago

Da, wo bei Dir meeting_id:d steht, müsste session_id:d stehen.

RobTranquillo commented 10 years ago

ok geändert und mit Deinem URL-Vorschlag noch mal probiert. Bleibt aber beim KeyError:

 % python main.py -v --submissionurl "http://ratsinfo.dresden.de/vo0050.php?__kvonr=8174&voselect=3632"
Found PHP template system
Traceback (most recent call last):
  File "main.py", line 127, in <module>
    scraper.get_submission(submission_url=options.submission_url)
  File "/home/rob/Dokumente/code/scrape-a-ris/risscraper/scraper.py", line 402, in get_submission
    submission_id = parsed['submission_id']
  File "/home/rob/Dokumente/code/scrape-a-ris/venv/lib/python2.7/site-packages/parse.py", line 968, in __getitem__
    return self.named[item]
KeyError: 'submission_id' 
marians commented 10 years ago

Das ist ein neuer Fehler. Er kommt aus Zeile 402 von risscraper/scraper.py, darin geht es um SUBMISSION_DETAIL_PARSE_PATTERN. Wie die Konfiguration dafür aussehen sollte, kannst Du wieder im Konfigurationsbeispiel sehen.

https://github.com/marians/scrape-a-ris/blob/master/config_example.py#L138

RobTranquillo commented 10 years ago

Cool. jetzt rödelt es schon mal los. Danke. Und sorry wenn ich mich bisschen langsam anstelle. Jetzt treten zwar vereinzelt immer mal: xyz not found in RESULT_STRING auf. Ich hoffe, das werd ich allein hinbekommen durch erweitern des jeweiligen Namensraum.

marians commented 10 years ago

Wunderbar. Viel Erfolg damit!