This repository has been archived by the owner on Nov 3, 2022. It is now read-only.
forked from marians/scrape-a-ris
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config_example.py
228 lines (173 loc) · 8.97 KB
/
config_example.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# encoding: utf-8
"""
Copyright (c) 2012 Marian Steinbach
Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und
der zugehörigen Dokumentationen (die "Software") erhält, die Erlaubnis
erteilt, sie uneingeschränkt zu benutzen, inklusive und ohne Ausnahme, dem
Recht, sie zu verwenden, kopieren, ändern, fusionieren, verlegen
verbreiten, unterlizenzieren und/oder zu verkaufen, und Personen, die diese
Software erhalten, diese Rechte zu geben, unter den folgenden Bedingungen:
Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen
Kopien oder Teilkopien der Software beizulegen.
Die Software wird ohne jede ausdrückliche oder implizierte Garantie
bereitgestellt, einschließlich der Garantie zur Benutzung für den
vorgesehenen oder einen bestimmten Zweck sowie jeglicher Rechtsverletzung,
jedoch nicht darauf beschränkt. In keinem Fall sind die Autoren oder
Copyrightinhaber für jeglichen Schaden oder sonstige Ansprüche haftbar zu
machen, ob infolge der Erfüllung eines Vertrages, eines Delikts oder anders
im Zusammenhang mit der Software oder sonstiger Verwendung der Software
entstanden.
"""
# RS key (Regionalschlüssel) for the administrative unit.
#
# This is used as a namespace prefix in order to make identifiers
# in the system unique.
#
# Find the key for your German city/town/county here:
# https://www.destatis.de/DE/ZahlenFakten/LaenderRegionen/Regionales/Gemeindeverzeichnis/Administrativ/AdministrativeUebersicht.html
#
# The RS can be up to 12 digits long and MUST NOT contain white space.
# It MUST be a string, not a number, in order to preserve possible
# leading zeroes.
#
RS = "082220000000" # Mannheim
# Currently, only "mongodb" is supported
DB_TYPE = 'mongodb'
# Name of the MongoDB database
DB_NAME = 'scrapearis'
# Use "localhost" if MongoDB is running on the same machine
DB_HOST = 'localhost'
# MongoDB default port is 27017
DB_PORT = 27017
# SessionNet base url, should include trailing slash
BASE_URL = 'http://buergerinfo.mannheim.de/buergerinfo/' # Mannheim
# Name to identify your crawler to the server
USER_AGENT_NAME = 'scrape-a-ris/0.1'
# Number of seconds to wait between requests. Increase this
# if the systems behaves unstable (seconds)
WAIT_TIME = 0.2
# Log level (DEBUG, INFO, WARNING, ERROR or CRITICAL)
LOG_LEVEL = 'INFO'
# File to log to
LOG_FILE = 'scrapearis_%s_%s.log' % (DB_NAME, RS)
###### Result normalization mapping
RESULT_STRINGS = {
'zur Kenntnis genommen': 'KENNTNIS_GENOMMEN',
'einstimmig beschlossen': 'BESCHLOSSEN_EINSTIMMIG',
u'einstimmig mit \xc4nderung / teilweise beschlossen': 'BESCHLOSSEN_EINSTIMMIG_GEAENDERT',
'mit Mehrheit beschlossen': 'BESCHLOSSEN_MEHRHEIT',
'mehrheitlich beschlossen': 'BESCHLOSSEN_MEHRHEIT',
u'mehrheitlich mit \xc4nderung /teilweise beschlossen': 'BESCHLOSSEN_MEHRHEIT_GEAENDERT',
'in Form von WAHLEN beschlossen': 'BESCHLOSSEN_DURCH_WAHLEN',
'einstimmig abgelehnt': 'ABGELEHNT_EINSTIMMIG',
'mehrheitlich abgelehnt': 'ABGELEHNT_MEHRHEIT',
'im BBR beraten': 'BERATEN_BBR',
'verwiesen in:': 'VERWIESEN',
'in der Sitzung vertagt': 'VERTAGT_IN_SITZUNG',
u'vor Eintritt in die Tagesordnung zur\xfcckgezogen': 'ZURUECKGEZOGEN',
u'in der Sitzung zur\xfcckgezogen': 'ZURUECKGEZOGEN',
'abgesetzt': 'ABGESETZT',
'von der Tagesordnung abgesetzt': 'ABGESETZT',
'Verwaltung wird so verfahren': 'AKZEPTIERT',
'schriftlicher Bericht/Vorlage wurde zugesagt': 'BERICHT_ZUGESAGT',
'wird in der Verwaltung weiterbearbeitet': 'WEITERBEARBEITUNG_IN_VERWALTUNG',
'durch STELLUNGNAHME der Verwaltung erledigt': 'ERLEDIGT_STELLUNGNAHME_VERWALTUNG',
u'durch andere Beschl\xfcsse erledigt': 'ERLEDIGT_DURCH_ANDERE_BESCHLUESSE',
'ohne Empfehlung behandelt': 'BEHANDELT_OHNE_EMPFEHLUNG',
'Siehe Bemerkungsfeld': 'SONSTIGES',
'siehe Protokoll': 'SONSTIGES',
'Quorum wurde erreicht': 'QUORUM_ERREICHT'
}
##### Page URL masks
URLS = {
'ASP': {
# Month calender page
'CALENDAR_MONTH_PARSE_PATTERN': 'si0040.asp?__cjahr={year:d}&__cmonat={month:d}',
'CALENDAR_MONTH_PRINT_PATTERN': BASE_URL + 'si0040.asp?__cjahr=%d&__cmonat=%d',
# Session detail page
'SESSION_DETAIL_PARSE_PATTERN': 'to0040.asp?__ksinr={session_id:d}',
'SESSION_DETAIL_PRINT_PATTERN': BASE_URL + 'to0040.asp?__ksinr=%d',
# Committee detail page
'COMMITTEE_DETAIL_PARSE_PATTERN': 'kp0040.asp?__kgrnr={committee_id:d}',
'COMMITTEE_DETAIL_PRINT_PATTERN': BASE_URL + 'kp0040.asp?__kgrnr=%d',
# Submission detail page
'SUBMISSION_DETAIL_PARSE_PATTERN': 'vo0050.asp?__kvonr={submission_id:d}',
'SUBMISSION_DETAIL_PRINT_PATTERN': BASE_URL + 'vo0050.asp?__kvonr=%d',
# Attachment file download target file name(s)
'ATTACHMENT_DOWNLOAD_TARGET': ['ydocstart.asp', 'getfile.asp']
},
'PHP': {
# Month calender page
'CALENDAR_MONTH_PARSE_PATTERN': 'si0040.php?__cjahr={year:d}&__cmonat={month:d}',
'CALENDAR_MONTH_PRINT_PATTERN': BASE_URL + 'si0040.php?__cjahr=%d&__cmonat=%d',
# Session detail page
'SESSION_DETAIL_PARSE_PATTERN': 'to0040.php?__ksinr={session_id:d}',
'SESSION_DETAIL_PRINT_PATTERN': BASE_URL + 'to0040.php?__ksinr=%d',
# Committee detail page
'COMMITTEE_DETAIL_PARSE_PATTERN': 'kp0040.php?__kgrnr={committee_id:d}',
'COMMITTEE_DETAIL_PRINT_PATTERN': BASE_URL + 'kp0040.php?__kgrnr=%d',
# Submission detail page
'SUBMISSION_DETAIL_PARSE_PATTERN': 'vo0050.php?__kvonr={submission_id:d}',
'SUBMISSION_DETAIL_PRINT_PATTERN': BASE_URL + 'vo0050.php?__kvonr=%d',
# Attachment file download target file name
'ATTACHMENT_DOWNLOAD_TARGET': ['ydocstart.php', 'getfile.php']
}
}
##### XPATH strings to find elements within pages
XPATH = {
'ASP': {
# session title within the session details page
'SESSION_DETAIL_TITLE': '//h1',
# table fields with session identifier, comittee name and more details
'SESSION_DETAIL_IDENTIFIER_TD': '//*[@id="smctablevorgang"]/tbody//td',
# link to committe within the session details page
'SESSION_DETAIL_COMMITTEE_LINK': '//li[@class="smcmenucontext_fct_gremium"]/a',
# table rows containing agendaitems on session detail page
'SESSION_DETAIL_AGENDA_ROWS': '//*[@id="smc_page_to0040_contenttable1"]/tbody/tr',
# link to submission in agenda item row on session detail page
'SESSION_DETAIL_AGENDA_ROWS_SUBMISSION_LINK': 'td/a',
# table with session-related attachment downloads on session detail page
'SESSION_DETAIL_ATTACHMENTS': '//*[@id="smccontent"]/table',
# distinct class of the box/table containing session-related attachment downloads
'SESSION_DETAIL_ATTACHMENTS_CONTAINER_CLASSNAME': 'smcdocboxright',
# Same as above, for the submission detail page (Vorlagen-Detailseite)
'SUBMISSION_DETAIL_TITLE': '//h1',
'SUBMISSION_DETAIL_IDENTIFIER_TD': '//*[@id="smctablevorgang"]/tbody//td',
# "Beratungsfolge" table rows
'SUBMISSION_DETAIL_AGENDA_ROWS': '//*[@id="smc_page_vo0050_contenttable1"]/tbody/tr',
'SUBMISSION_DETAIL_ATTACHMENTS': '//*[@id="smccontent"]/table',
'SUBMISSION_DETAIL_ATTACHMENTS_CONTAINER_CLASSNAME': 'smcdocboxright',
},
'PHP': {
# session title within the session details page
'SESSION_DETAIL_TITLE': '//h1',
# table fields with session identifier, comittee name and more details
'SESSION_DETAIL_IDENTIFIER_TD': '//*[@id="smctablevorgang"]/tbody//td',
# link to committe within the session details page
'SESSION_DETAIL_COMMITTEE_LINK': '//a[@class="smccontextmenulink"]',
# table rows containing agendaitems on session detail page
'SESSION_DETAIL_AGENDA_ROWS': '//*[@class="smccontenttable smc_page_to0040_contenttable"]/tbody/tr',
# link to submission in agenda item row on session detail page
'SESSION_DETAIL_AGENDA_ROWS_SUBMISSION_LINK': './/a',
# table with session-related attachment downloads on session detail page
'SESSION_DETAIL_ATTACHMENTS': '//*[@id="smccontent"]//table',
# distinct class of the box/table containing session-related attachment downloads
'SESSION_DETAIL_ATTACHMENTS_CONTAINER_CLASSNAME': 'smcdocbox',
# Same as above, for the submission detail page (Vorlagen-Detailseite)
'SUBMISSION_DETAIL_TITLE': '//h1',
'SUBMISSION_DETAIL_IDENTIFIER_TD': '//*[@id="smctablevorgang"]/tbody//td',
# "Beratungsfolge" table rows
'SUBMISSION_DETAIL_AGENDA_ROWS': '//*[@class="smccontenttable smc_page_vo0050_contenttable"]/tbody/tr',
'SUBMISSION_DETAIL_ATTACHMENTS': '//*[@id="smccontent"]//table',
'SUBMISSION_DETAIL_ATTACHMENTS_CONTAINER_CLASSNAME': 'smcdocbox'
}
}
FILE_EXTENSIONS = {
'application/pdf': 'pdf',
'image/tiff': 'tif',
'image/jpeg': 'jpg',
'application/vnd.ms-powerpoint': 'pptx',
'application/msword': 'doc',
'application/zip': 'zip',
'text/html': 'html'
}