bsenst commited on
Commit
144d636
·
1 Parent(s): 13e013d

clear output in ipynb, add podcast bonus tutorial

Browse files
src/03_low_code/catalogue/quotes_scraper.ipynb CHANGED
@@ -31,30 +31,7 @@
31
  "cell_type": "code",
32
  "execution_count": null,
33
  "metadata": {},
34
- "outputs": [
35
- {
36
- "name": "stdout",
37
- "output_type": "stream",
38
- "text": [
39
- "Requirement already satisfied: requests in /home/codespace/.local/lib/python3.12/site-packages (2.32.3)\n",
40
- "Requirement already satisfied: beautifulsoup4 in /home/codespace/.local/lib/python3.12/site-packages (4.12.3)\n",
41
- "Requirement already satisfied: pandas in /home/codespace/.local/lib/python3.12/site-packages (2.2.3)\n",
42
- "Requirement already satisfied: charset-normalizer<4,>=2 in /home/codespace/.local/lib/python3.12/site-packages (from requests) (3.3.2)\n",
43
- "Requirement already satisfied: idna<4,>=2.5 in /home/codespace/.local/lib/python3.12/site-packages (from requests) (3.10)\n",
44
- "Requirement already satisfied: urllib3<3,>=1.21.1 in /home/codespace/.local/lib/python3.12/site-packages (from requests) (2.2.3)\n",
45
- "Requirement already satisfied: certifi>=2017.4.17 in /home/codespace/.local/lib/python3.12/site-packages (from requests) (2024.8.30)\n",
46
- "Requirement already satisfied: soupsieve>1.2 in /home/codespace/.local/lib/python3.12/site-packages (from beautifulsoup4) (2.6)\n",
47
- "Requirement already satisfied: numpy>=1.26.0 in /usr/local/python/3.12.1/lib/python3.12/site-packages (from pandas) (1.26.4)\n",
48
- "Requirement already satisfied: python-dateutil>=2.8.2 in /home/codespace/.local/lib/python3.12/site-packages (from pandas) (2.9.0.post0)\n",
49
- "Requirement already satisfied: pytz>=2020.1 in /home/codespace/.local/lib/python3.12/site-packages (from pandas) (2024.2)\n",
50
- "Requirement already satisfied: tzdata>=2022.7 in /home/codespace/.local/lib/python3.12/site-packages (from pandas) (2024.2)\n",
51
- "Requirement already satisfied: six>=1.5 in /home/codespace/.local/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n",
52
- "\n",
53
- "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n",
54
- "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpython3 -m pip install --upgrade pip\u001b[0m\n"
55
- ]
56
- }
57
- ],
58
  "source": [
59
  "# Installieren der benötigten Bibliotheken\n",
60
  "# ! pip install requests beautifulsoup4 pandas"
@@ -71,17 +48,9 @@
71
  },
72
  {
73
  "cell_type": "code",
74
- "execution_count": 2,
75
  "metadata": {},
76
- "outputs": [
77
- {
78
- "name": "stdout",
79
- "output_type": "stream",
80
- "text": [
81
- "HTML-Inhalt erfolgreich abgerufen.\n"
82
- ]
83
- }
84
- ],
85
  "source": [
86
  "import requests\n",
87
  "\n",
@@ -109,17 +78,9 @@
109
  },
110
  {
111
  "cell_type": "code",
112
- "execution_count": 3,
113
  "metadata": {},
114
- "outputs": [
115
- {
116
- "name": "stdout",
117
- "output_type": "stream",
118
- "text": [
119
- "Quotes to Scrape\n"
120
- ]
121
- }
122
- ],
123
  "source": [
124
  "from bs4 import BeautifulSoup\n",
125
  "\n",
@@ -141,21 +102,9 @@
141
  },
142
  {
143
  "cell_type": "code",
144
- "execution_count": 4,
145
  "metadata": {},
146
- "outputs": [
147
- {
148
- "name": "stdout",
149
- "output_type": "stream",
150
- "text": [
151
- "\"“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”\" - Albert Einstein\n",
152
- "\"“It is our choices, Harry, that show what we truly are, far more than our abilities.”\" - J.K. Rowling\n",
153
- "\"“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”\" - Albert Einstein\n",
154
- "\"“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”\" - Jane Austen\n",
155
- "\"“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”\" - Marilyn Monroe\n"
156
- ]
157
- }
158
- ],
159
  "source": [
160
  "# Listen zur Speicherung der Daten\n",
161
  "quotes = []\n",
@@ -187,78 +136,9 @@
187
  },
188
  {
189
  "cell_type": "code",
190
- "execution_count": 5,
191
  "metadata": {},
192
- "outputs": [
193
- {
194
- "data": {
195
- "text/html": [
196
- "<div>\n",
197
- "<style scoped>\n",
198
- " .dataframe tbody tr th:only-of-type {\n",
199
- " vertical-align: middle;\n",
200
- " }\n",
201
- "\n",
202
- " .dataframe tbody tr th {\n",
203
- " vertical-align: top;\n",
204
- " }\n",
205
- "\n",
206
- " .dataframe thead th {\n",
207
- " text-align: right;\n",
208
- " }\n",
209
- "</style>\n",
210
- "<table border=\"1\" class=\"dataframe\">\n",
211
- " <thead>\n",
212
- " <tr style=\"text-align: right;\">\n",
213
- " <th></th>\n",
214
- " <th>Quote</th>\n",
215
- " <th>Author</th>\n",
216
- " </tr>\n",
217
- " </thead>\n",
218
- " <tbody>\n",
219
- " <tr>\n",
220
- " <th>0</th>\n",
221
- " <td>“The world as we have created it is a process ...</td>\n",
222
- " <td>Albert Einstein</td>\n",
223
- " </tr>\n",
224
- " <tr>\n",
225
- " <th>1</th>\n",
226
- " <td>“It is our choices, Harry, that show what we t...</td>\n",
227
- " <td>J.K. Rowling</td>\n",
228
- " </tr>\n",
229
- " <tr>\n",
230
- " <th>2</th>\n",
231
- " <td>“There are only two ways to live your life. On...</td>\n",
232
- " <td>Albert Einstein</td>\n",
233
- " </tr>\n",
234
- " <tr>\n",
235
- " <th>3</th>\n",
236
- " <td>“The person, be it gentleman or lady, who has ...</td>\n",
237
- " <td>Jane Austen</td>\n",
238
- " </tr>\n",
239
- " <tr>\n",
240
- " <th>4</th>\n",
241
- " <td>“Imperfection is beauty, madness is genius and...</td>\n",
242
- " <td>Marilyn Monroe</td>\n",
243
- " </tr>\n",
244
- " </tbody>\n",
245
- "</table>\n",
246
- "</div>"
247
- ],
248
- "text/plain": [
249
- " Quote Author\n",
250
- "0 “The world as we have created it is a process ... Albert Einstein\n",
251
- "1 “It is our choices, Harry, that show what we t... J.K. Rowling\n",
252
- "2 “There are only two ways to live your life. On... Albert Einstein\n",
253
- "3 “The person, be it gentleman or lady, who has ... Jane Austen\n",
254
- "4 “Imperfection is beauty, madness is genius and... Marilyn Monroe"
255
- ]
256
- },
257
- "execution_count": 5,
258
- "metadata": {},
259
- "output_type": "execute_result"
260
- }
261
- ],
262
  "source": [
263
  "import pandas as pd\n",
264
  "\n",
 
31
  "cell_type": "code",
32
  "execution_count": null,
33
  "metadata": {},
34
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  "source": [
36
  "# Installieren der benötigten Bibliotheken\n",
37
  "# ! pip install requests beautifulsoup4 pandas"
 
48
  },
49
  {
50
  "cell_type": "code",
51
+ "execution_count": null,
52
  "metadata": {},
53
+ "outputs": [],
 
 
 
 
 
 
 
 
54
  "source": [
55
  "import requests\n",
56
  "\n",
 
78
  },
79
  {
80
  "cell_type": "code",
81
+ "execution_count": null,
82
  "metadata": {},
83
+ "outputs": [],
 
 
 
 
 
 
 
 
84
  "source": [
85
  "from bs4 import BeautifulSoup\n",
86
  "\n",
 
102
  },
103
  {
104
  "cell_type": "code",
105
+ "execution_count": null,
106
  "metadata": {},
107
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
108
  "source": [
109
  "# Listen zur Speicherung der Daten\n",
110
  "quotes = []\n",
 
136
  },
137
  {
138
  "cell_type": "code",
139
+ "execution_count": null,
140
  "metadata": {},
141
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  "source": [
143
  "import pandas as pd\n",
144
  "\n",
src/03_low_code/video_transcripts/get_videos_for_youtube_channels.ipynb CHANGED
The diff for this file is too large to render. See raw diff
 
src/03_low_code/video_transcripts/youtube-transcript-extraction.ipynb CHANGED
@@ -28,7 +28,7 @@
28
  },
29
  {
30
  "cell_type": "code",
31
- "execution_count": 18,
32
  "metadata": {
33
  "execution": {
34
  "iopub.execute_input": "2024-12-08T19:21:41.981395Z",
@@ -39,17 +39,7 @@
39
  },
40
  "trusted": true
41
  },
42
- "outputs": [
43
- {
44
- "name": "stdout",
45
- "output_type": "stream",
46
- "text": [
47
- "\n",
48
- "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n",
49
- "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpython3 -m pip install --upgrade pip\u001b[0m\n"
50
- ]
51
- }
52
- ],
53
  "source": [
54
  "! pip install pytube youtube-transcript-api reportlab -q"
55
  ]
@@ -241,7 +231,7 @@
241
  },
242
  {
243
  "cell_type": "code",
244
- "execution_count": 22,
245
  "metadata": {
246
  "execution": {
247
  "iopub.execute_input": "2024-12-08T19:32:38.175946Z",
@@ -252,24 +242,7 @@
252
  },
253
  "trusted": true
254
  },
255
- "outputs": [
256
- {
257
- "name": "stdout",
258
- "output_type": "stream",
259
- "text": [
260
- "Verarbeite Video: Jq7iHVGevRQ\n",
261
- "Transkript für 'Jq7iHVGevRQ' gespeichert als Jq7iHVGevRQ.pdf.\n",
262
- "Verarbeite Video: q9eWAtZxrW8\n",
263
- "Transkript für 'q9eWAtZxrW8' gespeichert als q9eWAtZxrW8.pdf.\n",
264
- "Verarbeite Video: NmjX3mkVTM4\n",
265
- "Transkript für 'NmjX3mkVTM4' gespeichert als NmjX3mkVTM4.pdf.\n",
266
- "Verarbeite Video: gELlAym0eJM\n",
267
- "Transkript für 'gELlAym0eJM' gespeichert als gELlAym0eJM.pdf.\n",
268
- "Verarbeite Video: qT2pbTlsNyk\n",
269
- "Transkript für 'qT2pbTlsNyk' gespeichert als qT2pbTlsNyk.pdf.\n"
270
- ]
271
- }
272
- ],
273
  "source": [
274
  "# Eingabe der URLs\n",
275
  "urls = \"https://www.youtube.com/playlist?list=PLfRDp3S7rLduqUTa6oXe_Zlv7bEeD06t6\"\n",
@@ -318,17 +291,9 @@
318
  },
319
  {
320
  "cell_type": "code",
321
- "execution_count": 23,
322
  "metadata": {},
323
- "outputs": [
324
- {
325
- "name": "stdout",
326
- "output_type": "stream",
327
- "text": [
328
- "ZIP-Archiv 'transcripts.zip' wurde erstellt.\n"
329
- ]
330
- }
331
- ],
332
  "source": [
333
  "\n",
334
  "# Erstellen eines ZIP-Archivs\n",
 
28
  },
29
  {
30
  "cell_type": "code",
31
+ "execution_count": null,
32
  "metadata": {
33
  "execution": {
34
  "iopub.execute_input": "2024-12-08T19:21:41.981395Z",
 
39
  },
40
  "trusted": true
41
  },
42
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
43
  "source": [
44
  "! pip install pytube youtube-transcript-api reportlab -q"
45
  ]
 
231
  },
232
  {
233
  "cell_type": "code",
234
+ "execution_count": null,
235
  "metadata": {
236
  "execution": {
237
  "iopub.execute_input": "2024-12-08T19:32:38.175946Z",
 
242
  },
243
  "trusted": true
244
  },
245
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  "source": [
247
  "# Eingabe der URLs\n",
248
  "urls = \"https://www.youtube.com/playlist?list=PLfRDp3S7rLduqUTa6oXe_Zlv7bEeD06t6\"\n",
 
291
  },
292
  {
293
  "cell_type": "code",
294
+ "execution_count": null,
295
  "metadata": {},
296
+ "outputs": [],
 
 
 
 
 
 
 
 
297
  "source": [
298
  "\n",
299
  "# Erstellen eines ZIP-Archivs\n",
src/04_use_case/forum/buergergeld_forum.ipynb CHANGED
The diff for this file is too large to render. See raw diff
 
src/04_use_case/jobs/Jobboerse_API.ipynb CHANGED
The diff for this file is too large to render. See raw diff
 
src/04_use_case/laws/Gesetze_im_Internet_Aktualitätendienst.ipynb CHANGED
@@ -41,7 +41,7 @@
41
  },
42
  {
43
  "cell_type": "code",
44
- "execution_count": 36,
45
  "metadata": {
46
  "colab": {
47
  "base_uri": "https://localhost:8080/"
@@ -49,16 +49,7 @@
49
  "id": "d-v9mlTtOzcL",
50
  "outputId": "1c7b64fe-35df-40c2-f715-86fbc0b3d2fe"
51
  },
52
- "outputs": [
53
- {
54
- "name": "stdout",
55
- "output_type": "stream",
56
- "text": [
57
- "Requirement already satisfied: feedparser in /usr/local/lib/python3.10/dist-packages (6.0.11)\n",
58
- "Requirement already satisfied: sgmllib3k in /usr/local/lib/python3.10/dist-packages (from feedparser) (1.0.0)\n"
59
- ]
60
- }
61
- ],
62
  "source": [
63
  "# prompt: installiere die bibliothek feedparser\n",
64
  "\n",
@@ -123,7 +114,7 @@
123
  },
124
  {
125
  "cell_type": "code",
126
- "execution_count": 39,
127
  "metadata": {
128
  "colab": {
129
  "base_uri": "https://localhost:8080/",
@@ -132,150 +123,7 @@
132
  "id": "Y0HqRhRhS0ys",
133
  "outputId": "da1c6f82-ff69-47d0-df35-9005bf1daf3e"
134
  },
135
- "outputs": [
136
- {
137
- "data": {
138
- "text/html": [
139
- "<div>\n",
140
- "<style scoped>\n",
141
- " .dataframe tbody tr th:only-of-type {\n",
142
- " vertical-align: middle;\n",
143
- " }\n",
144
- "\n",
145
- " .dataframe tbody tr th {\n",
146
- " vertical-align: top;\n",
147
- " }\n",
148
- "\n",
149
- " .dataframe thead th {\n",
150
- " text-align: right;\n",
151
- " }\n",
152
- "</style>\n",
153
- "<table border=\"1\" class=\"dataframe\">\n",
154
- " <thead>\n",
155
- " <tr style=\"text-align: right;\">\n",
156
- " <th></th>\n",
157
- " <th>0</th>\n",
158
- " </tr>\n",
159
- " </thead>\n",
160
- " <tbody>\n",
161
- " <tr>\n",
162
- " <th>title</th>\n",
163
- " <td>Fünfzehnte Verordnung zur Änderung der Sozialv...</td>\n",
164
- " </tr>\n",
165
- " <tr>\n",
166
- " <th>title_detail</th>\n",
167
- " <td>{'type': 'text/plain', 'language': 'de', 'base...</td>\n",
168
- " </tr>\n",
169
- " <tr>\n",
170
- " <th>links</th>\n",
171
- " <td>[{'rel': 'alternate', 'type': 'text/html', 'hr...</td>\n",
172
- " </tr>\n",
173
- " <tr>\n",
174
- " <th>link</th>\n",
175
- " <td>https://www.recht.bund.de/eli/bund/bgbl-1/2024...</td>\n",
176
- " </tr>\n",
177
- " <tr>\n",
178
- " <th>published</th>\n",
179
- " <td>2024-12-06</td>\n",
180
- " </tr>\n",
181
- " <tr>\n",
182
- " <th>published_parsed</th>\n",
183
- " <td>(2024, 12, 6, 0, 0, 0, 4, 341, 0)</td>\n",
184
- " </tr>\n",
185
- " <tr>\n",
186
- " <th>summary</th>\n",
187
- " <td></td>\n",
188
- " </tr>\n",
189
- " <tr>\n",
190
- " <th>summary_detail</th>\n",
191
- " <td>{'type': 'text/html', 'language': 'de', 'base'...</td>\n",
192
- " </tr>\n",
193
- " <tr>\n",
194
- " <th>meta_shorttitle</th>\n",
195
- " <td></td>\n",
196
- " </tr>\n",
197
- " <tr>\n",
198
- " <th>meta_amtliche-abkuerzung</th>\n",
199
- " <td></td>\n",
200
- " </tr>\n",
201
- " <tr>\n",
202
- " <th>meta_typ</th>\n",
203
- " <td>Verordnung</td>\n",
204
- " </tr>\n",
205
- " <tr>\n",
206
- " <th>meta_initiant</th>\n",
207
- " <td>Bundesministerium für Arbeit und Soziales</td>\n",
208
- " </tr>\n",
209
- " <tr>\n",
210
- " <th>meta_ausfertigung</th>\n",
211
- " <td>2024-12-06</td>\n",
212
- " </tr>\n",
213
- " <tr>\n",
214
- " <th>meta_fundstelle</th>\n",
215
- " <td>BGBl. 2024 I Nr. 394 vom 06.12.2024</td>\n",
216
- " </tr>\n",
217
- " <tr>\n",
218
- " <th>meta_nummer</th>\n",
219
- " <td>394</td>\n",
220
- " </tr>\n",
221
- " <tr>\n",
222
- " <th>meta_jahr</th>\n",
223
- " <td>2024</td>\n",
224
- " </tr>\n",
225
- " <tr>\n",
226
- " <th>meta_bgbl</th>\n",
227
- " <td>I</td>\n",
228
- " </tr>\n",
229
- " <tr>\n",
230
- " <th>meta_hinweis</th>\n",
231
- " <td></td>\n",
232
- " </tr>\n",
233
- " <tr>\n",
234
- " <th>meta_fna</th>\n",
235
- " <td>860-4-1-16</td>\n",
236
- " </tr>\n",
237
- " <tr>\n",
238
- " <th>meta_sachgebiet</th>\n",
239
- " <td>Sozialgesetzbuch</td>\n",
240
- " </tr>\n",
241
- " <tr>\n",
242
- " <th>meta_gesta</th>\n",
243
- " <td></td>\n",
244
- " </tr>\n",
245
- " </tbody>\n",
246
- "</table>\n",
247
- "</div><br><label><b>dtype:</b> object</label>"
248
- ],
249
- "text/plain": [
250
- "title Fünfzehnte Verordnung zur Änderung der Sozialv...\n",
251
- "title_detail {'type': 'text/plain', 'language': 'de', 'base...\n",
252
- "links [{'rel': 'alternate', 'type': 'text/html', 'hr...\n",
253
- "link https://www.recht.bund.de/eli/bund/bgbl-1/2024...\n",
254
- "published 2024-12-06\n",
255
- "published_parsed (2024, 12, 6, 0, 0, 0, 4, 341, 0)\n",
256
- "summary \n",
257
- "summary_detail {'type': 'text/html', 'language': 'de', 'base'...\n",
258
- "meta_shorttitle \n",
259
- "meta_amtliche-abkuerzung \n",
260
- "meta_typ Verordnung\n",
261
- "meta_initiant Bundesministerium für Arbeit und Soziales\n",
262
- "meta_ausfertigung 2024-12-06\n",
263
- "meta_fundstelle BGBl. 2024 I Nr. 394 vom 06.12.2024\n",
264
- "meta_nummer 394\n",
265
- "meta_jahr 2024\n",
266
- "meta_bgbl I\n",
267
- "meta_hinweis \n",
268
- "meta_fna 860-4-1-16\n",
269
- "meta_sachgebiet Sozialgesetzbuch\n",
270
- "meta_gesta \n",
271
- "Name: 0, dtype: object"
272
- ]
273
- },
274
- "execution_count": 39,
275
- "metadata": {},
276
- "output_type": "execute_result"
277
- }
278
- ],
279
  "source": [
280
  "# prompt: bitte stelle den ersten eintrag des dataframe dar\n",
281
  "\n",
@@ -292,7 +140,7 @@
292
  },
293
  {
294
  "cell_type": "code",
295
- "execution_count": 40,
296
  "metadata": {
297
  "colab": {
298
  "base_uri": "https://localhost:8080/"
@@ -300,18 +148,7 @@
300
  "id": "3jmt9tybTMLb",
301
  "outputId": "b1d40007-7567-488f-c3de-d3dccfe4b7e4"
302
  },
303
- "outputs": [
304
- {
305
- "data": {
306
- "text/plain": [
307
- "(500, 21)"
308
- ]
309
- },
310
- "execution_count": 40,
311
- "metadata": {},
312
- "output_type": "execute_result"
313
- }
314
- ],
315
  "source": [
316
  "# prompt: wie groß ist das dataframe?\n",
317
  "\n",
@@ -328,7 +165,7 @@
328
  },
329
  {
330
  "cell_type": "code",
331
- "execution_count": 41,
332
  "metadata": {
333
  "colab": {
334
  "base_uri": "https://localhost:8080/",
@@ -337,190 +174,7 @@
337
  "id": "atYQfhdMTTCa",
338
  "outputId": "c0f9be5e-3a2c-4074-c2e5-39692e1dee10"
339
  },
340
- "outputs": [
341
- {
342
- "data": {
343
- "text/html": [
344
- "<div>\n",
345
- "<style scoped>\n",
346
- " .dataframe tbody tr th:only-of-type {\n",
347
- " vertical-align: middle;\n",
348
- " }\n",
349
- "\n",
350
- " .dataframe tbody tr th {\n",
351
- " vertical-align: top;\n",
352
- " }\n",
353
- "\n",
354
- " .dataframe thead th {\n",
355
- " text-align: right;\n",
356
- " }\n",
357
- "</style>\n",
358
- "<table border=\"1\" class=\"dataframe\">\n",
359
- " <thead>\n",
360
- " <tr style=\"text-align: right;\">\n",
361
- " <th></th>\n",
362
- " <th>count</th>\n",
363
- " </tr>\n",
364
- " <tr>\n",
365
- " <th>meta_initiant</th>\n",
366
- " <th></th>\n",
367
- " </tr>\n",
368
- " </thead>\n",
369
- " <tbody>\n",
370
- " <tr>\n",
371
- " <th>Auswärtiges Amt</th>\n",
372
- " <td>240</td>\n",
373
- " </tr>\n",
374
- " <tr>\n",
375
- " <th>Bundesministerium für Digitales und Verkehr</th>\n",
376
- " <td>28</td>\n",
377
- " </tr>\n",
378
- " <tr>\n",
379
- " <th>Bundesministerium der Justiz</th>\n",
380
- " <td>26</td>\n",
381
- " </tr>\n",
382
- " <tr>\n",
383
- " <th>Bundesministerium der Finanzen</th>\n",
384
- " <td>24</td>\n",
385
- " </tr>\n",
386
- " <tr>\n",
387
- " <th>Bundesministerium des Innern und für Heimat</th>\n",
388
- " <td>23</td>\n",
389
- " </tr>\n",
390
- " <tr>\n",
391
- " <th>Bundesministerium für wirtschaftliche Zusammenarbeit und Entwicklung</th>\n",
392
- " <td>22</td>\n",
393
- " </tr>\n",
394
- " <tr>\n",
395
- " <th>Bundesministerium für Arbeit und Soziales</th>\n",
396
- " <td>19</td>\n",
397
- " </tr>\n",
398
- " <tr>\n",
399
- " <th>Bundesministerium für Ernährung und Landwirtschaft</th>\n",
400
- " <td>18</td>\n",
401
- " </tr>\n",
402
- " <tr>\n",
403
- " <th>Bundesaufsichtsamt für Flugsicherung</th>\n",
404
- " <td>18</td>\n",
405
- " </tr>\n",
406
- " <tr>\n",
407
- " <th>Bundesministerium für Wirtschaft und Klimaschutz</th>\n",
408
- " <td>16</td>\n",
409
- " </tr>\n",
410
- " <tr>\n",
411
- " <th>Bundesministerium für Gesundheit</th>\n",
412
- " <td>13</td>\n",
413
- " </tr>\n",
414
- " <tr>\n",
415
- " <th>Bundesministerium für Bildung und Forschung</th>\n",
416
- " <td>11</td>\n",
417
- " </tr>\n",
418
- " <tr>\n",
419
- " <th>Bundesministerium der Verteidigung</th>\n",
420
- " <td>10</td>\n",
421
- " </tr>\n",
422
- " <tr>\n",
423
- " <th>Bundesministerium für Umwelt, Naturschutz, nukleare Sicherheit und Verbraucherschutz</th>\n",
424
- " <td>7</td>\n",
425
- " </tr>\n",
426
- " <tr>\n",
427
- " <th>Generaldirektion Wasserstraßen und Schifffahrt</th>\n",
428
- " <td>7</td>\n",
429
- " </tr>\n",
430
- " <tr>\n",
431
- " <th>DRV Bund</th>\n",
432
- " <td>2</td>\n",
433
- " </tr>\n",
434
- " <tr>\n",
435
- " <th>Bundesamt für Logistik und Mobilität</th>\n",
436
- " <td>2</td>\n",
437
- " </tr>\n",
438
- " <tr>\n",
439
- " <th>Bundesministerium für Wohnen, Stadtentwicklung und Bauwesen</th>\n",
440
- " <td>2</td>\n",
441
- " </tr>\n",
442
- " <tr>\n",
443
- " <th>Sonstige</th>\n",
444
- " <td>2</td>\n",
445
- " </tr>\n",
446
- " <tr>\n",
447
- " <th>Bundesministerium für Familie, Senioren, Frauen und Jugend</th>\n",
448
- " <td>2</td>\n",
449
- " </tr>\n",
450
- " <tr>\n",
451
- " <th>Unabhängiger Kontrollrat</th>\n",
452
- " <td>1</td>\n",
453
- " </tr>\n",
454
- " <tr>\n",
455
- " <th>Deutscher Bundestag</th>\n",
456
- " <td>1</td>\n",
457
- " </tr>\n",
458
- " <tr>\n",
459
- " <th>Luftfahrt-Bundesamt</th>\n",
460
- " <td>1</td>\n",
461
- " </tr>\n",
462
- " <tr>\n",
463
- " <th>Kassenärztliche Bundesvereinigung</th>\n",
464
- " <td>1</td>\n",
465
- " </tr>\n",
466
- " <tr>\n",
467
- " <th>Bundesanstalt für Finanzdienstleistungsaufsicht</th>\n",
468
- " <td>1</td>\n",
469
- " </tr>\n",
470
- " <tr>\n",
471
- " <th>Sozialversicherung für Landwirtschaft, Forsten und Gartenbau</th>\n",
472
- " <td>1</td>\n",
473
- " </tr>\n",
474
- " <tr>\n",
475
- " <th>Bundesamt für Verbraucherschutz und Lebensmittelsicherheit</th>\n",
476
- " <td>1</td>\n",
477
- " </tr>\n",
478
- " <tr>\n",
479
- " <th>Bundesagentur für Arbeit</th>\n",
480
- " <td>1</td>\n",
481
- " </tr>\n",
482
- " </tbody>\n",
483
- "</table>\n",
484
- "</div><br><label><b>dtype:</b> int64</label>"
485
- ],
486
- "text/plain": [
487
- "meta_initiant\n",
488
- "Auswärtiges Amt 240\n",
489
- "Bundesministerium für Digitales und Verkehr 28\n",
490
- "Bundesministerium der Justiz 26\n",
491
- "Bundesministerium der Finanzen 24\n",
492
- "Bundesministerium des Innern und für Heimat 23\n",
493
- "Bundesministerium für wirtschaftliche Zusammenarbeit und Entwicklung 22\n",
494
- "Bundesministerium für Arbeit und Soziales 19\n",
495
- "Bundesministerium für Ernährung und Landwirtschaft 18\n",
496
- "Bundesaufsichtsamt für Flugsicherung 18\n",
497
- "Bundesministerium für Wirtschaft und Klimaschutz 16\n",
498
- "Bundesministerium für Gesundheit 13\n",
499
- "Bundesministerium für Bildung und Forschung 11\n",
500
- "Bundesministerium der Verteidigung 10\n",
501
- "Bundesministerium für Umwelt, Naturschutz, nukleare Sicherheit und Verbraucherschutz 7\n",
502
- "Generaldirektion Wasserstraßen und Schifffahrt 7\n",
503
- "DRV Bund 2\n",
504
- "Bundesamt für Logistik und Mobilität 2\n",
505
- "Bundesministerium für Wohnen, Stadtentwicklung und Bauwesen 2\n",
506
- "Sonstige 2\n",
507
- "Bundesministerium für Familie, Senioren, Frauen und Jugend 2\n",
508
- "Unabhängiger Kontrollrat 1\n",
509
- "Deutscher Bundestag 1\n",
510
- "Luftfahrt-Bundesamt 1\n",
511
- "Kassenärztliche Bundesvereinigung 1\n",
512
- "Bundesanstalt für Finanzdienstleistungsaufsicht 1\n",
513
- "Sozialversicherung für Landwirtschaft, Forsten und Gartenbau 1\n",
514
- "Bundesamt für Verbraucherschutz und Lebensmittelsicherheit 1\n",
515
- "Bundesagentur für Arbeit 1\n",
516
- "Name: count, dtype: int64"
517
- ]
518
- },
519
- "execution_count": 41,
520
- "metadata": {},
521
- "output_type": "execute_result"
522
- }
523
- ],
524
  "source": [
525
  "# prompt: stelle die häufigkeitenverteilung der spalte meta_initiant dar\n",
526
  "\n",
@@ -537,7 +191,7 @@
537
  },
538
  {
539
  "cell_type": "code",
540
- "execution_count": 42,
541
  "metadata": {
542
  "colab": {
543
  "base_uri": "https://localhost:8080/",
@@ -546,18 +200,7 @@
546
  "id": "dmvjRjFPTf9V",
547
  "outputId": "6b91dc32-5d00-42cb-8b79-4a36bbf42b45"
548
  },
549
- "outputs": [
550
- {
551
- "data": {
552
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABhWElEQVR4nO3deVhUhf7H8c8gMIKAioiggpCauKFmZpZrmqgtmtotzVwrK7PUuhndezPNstXUUtPKpcW6V29ZV3PPpcw9d3FNwhLFcWMVWc7vDx/mJ7mCcM4MvF/Pw/N4zpw55zPjVxs/nXPGZhiGIQAAAAAAAMBEHlYHAAAAAAAAQOlDKQUAAAAAAADTUUoBAAAAAADAdJRSAAAAAAAAMB2lFAAAAAAAAExHKQUAAAAAAADTUUoBAAAAAADAdJRSAAAAAAAAMB2lFAAAAAAAAExHKQUAgBt79dVXZbPZTDlW27Zt1bZtW+fyqlWrZLPZNG/ePFOO379/f0VERJhyrMJKTU3VY489ppCQENlsNg0bNsy0Y/fv319+fn7Xta3NZtOrr77qXJ41a5ZsNpvi4+OLJ1wBsgAAgNKDUgoAABeRVwzk/ZQtW1ZVq1ZVTEyMJk2apJSUlCI5ztGjR/Xqq69q27ZtRbK/ouTK2a7HG2+8oVmzZumpp57S559/rkcfffSK20ZEROT7/Q4ODlarVq307bffmpjYHD/88IPLFU95hW7ej6+vr8LDw3Xfffdp5syZyszMLPS+XfH1AgDgijytDgAAAPIbM2aMIiMjlZWVpWPHjmnVqlUaNmyYxo8fr++//17R0dHObf/5z3/qpZdeKtD+jx49qtGjRysiIkKNGze+7uctXbq0QMcpjKtl+/jjj5Wbm1vsGW7Ejz/+qNtvv12jRo26ru0bN26s559/XtKF1z5t2jR1795dU6dO1ZNPPlmcUfN59NFH9fDDD8tutxfL/n/44QdNnjz5skVNRkaGPD2t+0g6depU+fn5KTMzU3/++aeWLFmigQMHasKECVqwYIHCwsIKvM+rvV4AAPD/KKUAAHAxnTt31q233upcjo2N1Y8//qh7771X999/v+Li4uTj4yNJ8vT0LPZ/0Kenp8vX11fe3t7Fepxr8fLysvT41yMpKUn16tW77u2rVaumPn36OJf79u2rWrVq6f333ze1lCpTpozKlClj2vEuVrZsWUuOm6dnz54KCgpyLr/yyiv68ssv1bdvXz344INav369hekAACjZuHwPAAA3cNddd+lf//qXfv/9d33xxRfO9Ze7p9SyZcvUsmVLVahQQX5+fqpTp45efvllSRfuA9WsWTNJ0oABA5yXLs2aNUvShftGNWjQQFu2bFHr1q3l6+vrfO5f7ymVJycnRy+//LJCQkJUrlw53X///Tpy5Ei+bSIiItS/f/9LnnvxPq+V7XL3lEpLS9Pzzz+vsLAw2e121alTR++++64Mw8i3nc1m0zPPPKP58+erQYMGstvtql+/vhYvXnz5N/wvkpKSNGjQIFWpUkVly5ZVo0aNNHv2bOfjeffXOnz4sBYuXOjMXtB7NIWEhKhu3bo6fPhwvv2uWrUq33bx8fH53puL/fbbb4qJiVG5cuVUtWpVjRkz5pL346+udE+pRYsWqU2bNvL391dAQICaNWumOXPmOB//6aef9OCDDyo8PFx2u11hYWEaPny4MjIynNv0799fkydPlqR8l8vludw9pbZu3arOnTsrICBAfn5+at++/SXlUF7mtWvXasSIEapcubLKlSunBx54QCdOnLjq672WRx55RI899pg2bNigZcuWFenrzc3N1YQJE1S/fn2VLVtWVapU0eDBg3X69Ol8GTZv3qyYmBgFBQXJx8dHkZGRGjhw4A29LgAAXA1nSgEA4CYeffRRvfzyy1q6dKkef/zxy26ze/du3XvvvYqOjtaYMWNkt9t18OBBrV27VpJUt25djRkzRq+88oqeeOIJtWrVSpJ0xx13OPdx8uRJde7cWQ8//LD69OmjKlWqXDXX66+/LpvNppEjRyopKUkTJkxQhw4dtG3bNucZXdfjerJdzDAM3X///Vq5cqUGDRqkxo0ba8mSJfr73/+uP//8U++//36+7X/++Wd98803evrpp+Xv769JkyapR48eSkhIUKVKla6YKyMjQ23bttXBgwf1zDPPKDIyUnPnzlX//v115swZPffcc6pbt64+//xzDR8+XNWrV3dekle5cuXrfv2SlJWVpSNHjlw1z9Xk5OSoU6dOuv322/X2229r8eLFGjVqlLKzszVmzJgC7WvWrFkaOHCg6tevr9jYWFWoUEFbt27V4sWL1bt3b0nS3LlzlZ6erqeeekqVKlXSxo0b9cEHH+iPP/7Q3LlzJUmDBw/W0aNHtWzZMn3+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8MN8699//33ZbLZ8x78RXbp00bFjx/J9m1t2drY++OAD+fn5OS/fKg41atRQmTJltGbNmnzrp0yZcsXnXPx+GIahDz/8UF5eXmrfvv11H7djx47y9/fXuHHjdO7cuXyP5Z2BlHeG0sVnJBmGoYkTJ16yv+v9fS1Tpow6duyo7777Lt/lhsePH9ecOXPUsmVLBQQEXPfrKKw5c+bok08+UYsWLZzvW1G83r/97W/KycnRa6+9dslzsrOzndufPn36kjO9/vrnGACAkoAzpQAAcDGLFi3S3r17lZ2drePHj+vHH3/UsmXLVKNGDX3//feX3Hj6YmPGjNGaNWt0zz33qEaNGkpKStKUKVNUvXp1tWzZUtKFgqhChQr66KOP5O/vr3Llyql58+aKjIwsVN7AwEC1bNlSAwYM0PHjxzVhwgTVqlVLjz/+uHObxx57TPPmzVOnTp30t7/9TYcOHdIXX3yR78bjBc123333qV27dvrHP/6h+Ph4NWrUSEuXLtV3332nYcOGXbLvwnriiSc0bdo09e/fX1u2bFFERITmzZuntWvXasKECVe9x9eNKl++vB588EF98MEHstlsqlmzphYsWOC899BflS1bVosXL1a/fv3UvHlzLVq0SAsXLtTLL7/svDTsegQEBOj999/XY489pmbNmql3796qWLGitm/frvT0dM2ePVtRUVGqWbOmXnjhBf35558KCAjQf//738vey6lp06aSpGeffVYxMTEqU6aMHn744csee+zYsVq2bJlatmypp59+Wp6enpo2bZoyMzP19ttvX/druF7z5s2Tn5+fzp8/rz///FNLlizR2rVrnTeez1MUr7dNmzYaPHiwxo0bp23btqljx47y8vLSgQMHNHfuXE2cOFE9e/bU7NmzNWXKFD3wwAOqWbOmUlJS9PHHHysgIEBdunQp8vcAAADLWPKdfwAA4BJ5X3Gf9+Pt7W2EhIQYd999tzFx4kQjOTn5kufkfa19nhUrVhhdu3Y1qlatanh7extVq1Y1evXqZezfvz/f87777jujXr16hqenpyHJmDlzpmEYhtGmTRujfv36l83Xpk0bo02bNs7llStXGpKMr776yoiNjTWCg4MNHx8f45577jF+//33S57/3nvvGdWqVTPsdrtx5513Gps3b75kn1fL1q9fP6NGjRr5tk1JSTGGDx9uVK1a1fDy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2LHjkvXbt29XpUqVbjgUAAAAAAAASrZClVK9evXSs88+q5UrVyonJ0c5OTn68ccf9dxzz+nhhx8u6owAAAAAAAAoYQr17Xuvvfaa4uPj1b59e3l6XthFbm6u+vbtyz2lAAAAAAAAcE2FKqW8vb3173//W6+99pq2b98uHx8fNWzYUDVq1CjqfAAAAAAAlBgJCQlyOBxWx1BQUJDCw8OtjoFSrlClVJ6bb75ZN998c1FlAQAAAACgxEpISFBUVF1lZKRbHUU+Pr7auzeOYgqWKlQplZOTo1mzZmnFihVKSkpSbm5uvsd//PHHIgkHAAAAAEBJ4XA4lJGRruYDRykgNMKyHMmJ8dowY7QcDgelFCxVqFLqueee06xZs3TPPfeoQYMGstlsRZ0LAAAAAIASKSA0QoHhdayOAViuUKXU119/rf/85z/q0qVLUecBAAAAAABAKeBRmCd5e3urVq1aRZ0FAAAAAAAApUShSqnnn39eEydOlGEYRZ0HAAAAAAAApUChLt/7+eeftXLlSi1atEj169eXl5dXvse/+eabIgkHAAAAAACAkqlQpVSFChX0wAMPFHUWAAAAAAAAlBKFKqVmzpxZ1DkAAAAAAABQihTqnlKSlJ2dreXLl2vatGlKSUmRJB09elSpqalFFg4AAAAAAAAlU6HOlPr999/VqVMnJSQkKDMzU3fffbf8/f311ltvKTMzUx999FFR5wQAAADgohISEuRwOKyOoaCgIIWHh1sdAwBwnQpVSj333HO69dZbtX37dlWqVMm5/oEHHtDjjz9eZOEAAAAAuLaEhARFRdVVRka61VHk4+OrvXvjKKYAwE0UqpT66aef9Msvv8jb2zvf+oiICP35559FEgwAAACA63M4HMrISFfzgaMUEBphWY7kxHhtmDFaDoeDUgoA3EShSqnc3Fzl5ORcsv6PP/6Qv7//DYcCAAAA4F4CQiMUGF7H6hgAADdSqBudd+zYURMmTHAu22w2paamatSoUerSpUtRZQMAAAAAAEAJVagzpd577z3FxMSoXr16OnfunHr37q0DBw4oKChIX331VVFnBAAAAAAAQAlTqFKqevXq2r59u77++mvt2LFDqampGjRokB555BH5+PgUdUYAAAAAAACUMIUqpSTJ09NTffr0KcosAAAAAAAAKCUKVUp99tlnV328b9++17WfcePG6Ztv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veXc7vPPP9ett94qf39/hYSEqHfv3kpKSnK+3nbt2kmSKlasKJvN5nz/cnNzNW7cOEVGRsrHx0eNGjXSvHnzrisbAAAoXSilAABAiefj46Pz588X6DnvvPOOGjVqpK1bt+qll17Sc889p2XLll3Xc//1r39pz549WrRokeLi4jR16lQFBQXl2+Yf//iHXnjhBW3btk0333yzevXq5bzE8NChQ+rUqZN69OihHTt26N///rd+/vlnPfPMM87n9+/fX0eOHNHKlSs1b948TZkyxVkaFVRUVJQ6d+6sb775xrkuKytLr732mrZv36758+crPj7eWTyFhYXpv//9ryRp3759SkxM1MSJEyVJ48aN02effaaPPvpIu3fv1vDhw9WnTx+tXr26UNkAAEDJ5frnmAMAABSSYRhasWKFlixZoqFDhxbouXfeeadeeuklSdLNN9+stWvX6v3339fdd999zecmJCSoSZMmuvXWWyVduAH5X73wwgu65557JEmjR49W/fr1dfDgQUVFRWncuHF65JFHnGd01a5dW5MmTVKbNm00depUJSQkaNGiRdq4caOaNWsmSfr0009Vt27dAr3Gi0VFRWnp0qXO5YEDBzp/fdNNN2nSpElq1qyZUlNT5efnp8DAQElScHCwKlSoIEnKzMzUG2+8oeXLl6tFixbO5/7888+aNm2a2rRpU+h8AACg5KGUAgAAJc6CBQvk5+enrKws5ebmqnfv3nr11VcLtI+8UuXi5ev9ZrunnnpKPXr00K+//qqOHTuqW7duuuOOO/JtEx0d7fx1aGiopAuX5EVFRWn79u3asWNHvkvyDMNQbm6uDh8+rP3798vT01NNmzZ1Ph4VFeUshwrDMAzZbDbn8pYtW/Tqq69q+/btOn36tHJzcyVdKNzq1at32X0cPHhQ6enplxR358+fV5MmTQqdDQAAlEyUUgAAoMRp166dpk6dKm9vb1WtWjXfDcg9PDxkGEa+7bOysor0+J07d9bvv/+uH374QcuWLVP79u01ZMgQvfvuu85tvLy8nL/OK4Pyip/U1FQNHjxYzz777CX7Dg8P1/79+4s0ryTFxcUpMjJSkpSWlqaYmBjFxMToyy+/VOXKlZWQkKCYmJirXgaZmpoqSVq4cKGqVauW7zG73V7kmQEAgHujlAIAACVOuXLlVKtWrcs+VrlyZSUmJjqXc3JytGvXLueNu/OsX7/+kuWCXB5XuXJl9evXT/369VOrVq3097//PV8pdTW33HKL9uzZc8XXEBUVpezsbG3ZssV5+d6+fft05syZ6853sb1792rx4sWKjY11Lp88eVJvvvmmwsLCJEmbN2/O9xxvb29JF96/PPXq1ZPdbldCQgKX6gEAgGuilAIAAKXKXXfdpREjRmjhwoWqWbOmxo8ff9kyZ+3atXr77bfVrVs3LVu2THPnztXChQuv6xivvPKKmjZtqvr16yszM1MLFiwoUKE1cuRI3X777XrmmWf02GOPqVy5ctqzZ4+WLVumDz/8UHXq1FGnTp00ePBgTZ06VZ6enho2bJh8fHyuue/s7GwdO3ZMubm5OnnypFatWqWxY8eqcePG+vvf/y7pwtlY3t7e+uCDD/Tkk09q165deu211/Ltp0aNGrLZbFqwYIG6dOkiHx8f+fv764UXXtDw4cOVm5urli1b6uzZs1q7dq0CAgLUr1+/634PAABAyce37wEAgFJl4MCB6tevn/r27as2bdropptuuuQsKUl6/vnntXnzZjVp0kRjx47V+PHjFRMTc13H8Pb2VmxsrKKjo9W6dWuVKVNGX3/99XVnjI6O1urVq7V//361atVKTZo00SuvvKKqVas6t5k5c6aqVq2qNm3aqHv37nriiScUHBx8zX3v3r1boaGhCg8PV9u2bfWf//xHsbGx+umnn+Tn5yfpwlles2bN0ty5c1WvXj29+eabl5zlVa1aNY0ePVovvfSSqlSp4vxmwNdee03/+te/NG7cONWtW1edOnXSwoULnZcGAgAA5LEZf72pAgAAAAAAAFDMOFMKAAAAAAAApqOUAgAAAAAAgOkopQAAAAAAAGA6SikAAAAAAACYjlIKAAAAAAAApqOUAgAAAAAAgOkopQAAAAAAAGA6SikAAAAAAACYjlIKAAAAAAAApqOUAgAAAAAAgOkopQAAAAAAAGA6SikAAAAAAACY7v8ACFq9IzEaAscAAAAASUVORK5CYII=",
553
- "text/plain": [
554
- "<Figure size 1200x600 with 1 Axes>"
555
- ]
556
- },
557
- "metadata": {},
558
- "output_type": "display_data"
559
- }
560
- ],
561
  "source": [
562
  "# prompt: visualisiere die spalte published\n",
563
  "\n",
@@ -588,7 +231,7 @@
588
  },
589
  {
590
  "cell_type": "code",
591
- "execution_count": 43,
592
  "metadata": {
593
  "colab": {
594
  "base_uri": "https://localhost:8080/",
@@ -597,18 +240,7 @@
597
  "id": "huFY2Qs9T0rt",
598
  "outputId": "a1f59b96-083a-4b71-ee55-30b36deb3072"
599
  },
600
- "outputs": [
601
- {
602
- "data": {
603
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnwAAAKSCAYAAABIowakAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABxuElEQVR4nO3dd3hUVeLG8Xdmkkx6IYQktNBCbyKgiIgURSyIotgVxLIqi7rq+rOCvXdXXSsqFooKKEVUOgjSi/TeQgkppLe5vz+iWSOQRpIz5ft5njxhJnfufRNC8nLuuefaLMuyBAAAAK9lNx0AAAAANYvCBwAA4OUofAAAAF6OwgcAAODlKHwAAABejsIHAADg5Sh8AAAAXo7CBwAA4OUofAAAAF6Owge4qTFjxshms9XKsc4991yde+65JY/nzp0rm82mSZMm1crxhw0bpiZNmtTKsaoqMzNTt9xyi+Li4mSz2XTPPfeYjgQAFUbhA2rB2LFjZbPZSt4CAwNVv359DRgwQG+++aYyMjKq5TgHDhzQmDFjtHr16mrZX3Vy52wV8eyzz2rs2LG644479Pnnn+uGG24wHUmLFy/WmDFjlJaW5tHHAFDzKHxALXryySf1+eef691339U///lPSdI999yjDh06aO3ataW2ffTRR5WTk1Op/R84cEBPPPFEpUvVrFmzNGvWrEq9prLKyvbBBx9o8+bNNXr8UzV79mydeeaZGj16tK6//nqdfvrppiNp8eLFeuKJJ2q88NX0MQDUPD/TAQBfMnDgQHXt2rXk8UMPPaTZs2fr4osv1qBBg7Rx40YFBQVJkvz8/OTnV7P/RLOzsxUcHKyAgIAaPU55/P39jR6/Ig4fPqy2bduajgEAVcIIH2BY37599dhjj2n37t0aN25cyfMnmsP3008/6eyzz1ZkZKRCQ0PVqlUrPfzww5KK591169ZNkjR8+PCS08djx46VVDxPr3379lqxYoXOOeccBQcHl7z273P4/lRUVKSHH35YcXFxCgkJ0aBBg7R3795S2zRp0kTDhg077rV/3Wd52U40hy8rK0v33XefGjVqJKfTqVatWunll1+WZVmltrPZbBo5cqQmT56s9u3by+l0ql27dpo5c+aJv+B/c/jwYY0YMUKxsbEKDAxUp06d9Omnn5Z8/M/5jDt37tS0adNKsu/ateuk+/wz08SJE9W2bVsFBQWpR48eWrdunSTpv//9r1q0aKHAwECde+65J9zX0qVLdcEFFygiIkLBwcHq3bu3Fi1aVPLxMWPG6IEHHpAkNW3a9Lhcn3zyifr27at69erJ6XSqbdu2evfddyv0NanIMXr37q1OnTqd8HWtWrXSgAEDJEm7du2SzWbTyy+/rNdee00JCQkKCgpS7969tX79+krlAVB1jPABbuCGG27Qww8/rFmzZunWW2894Ta///67Lr74YnXs2FFPPvmknE6ntm3bVlIC2rRpoyeffFKPP/64brvtNvXq1UuSdNZZZ5Xs4+jRoxo4cKCuvvpqXX/99YqNjS0z1zPPPCObzaYHH3xQhw8f1uuvv67+/ftr9erVJSORFVGRbH9lWZYGDRqkOXPmaMSIEercubN+/PFHPfDAA9q/f79ee+21UtsvXLhQ3377re68806FhYXpzTff1JAhQ7Rnzx5FR0efNFdOTo7OPfdcbdu2TSNHjlTTpk01ceJEDRs2TGlpabr77rvVpk0bff7557r33nvVsGFD3XfffZKkmJiYMj/nBQsWaOrUqbrrrrskSc8995wuvvhi/fvf/9Y777yjO++8U6mpqXrxxRd18803a/bs2SWvnT17tgYOHKjTTz9do0ePlt1uLylwCxYsUPfu3XX55Zdry5Yt+uqrr/Taa6+pbt26pXK9++67ateunQYNGiQ/Pz99//33uvPOO+VyuUoylaesY9xwww269dZbtX79erVv377kNcuWLdOWLVv06KOPltrXZ599poyMDN11113Kzc3VG2+8ob59+2rdunXlfh8CqAYWgBr3ySefWJKsZcuWnXSbiIgI67TTTit5PHr0aOuv/0Rfe+01S5J15MiRk+5j2bJlliTrk08+Oe5jvXv3tiRZ77333gk/1rt375LHc+bMsSRZDRo0sI4dO1by/IQJEyxJ1htvvFHyXEJCgnXTTTeVu8+yst10001WQkJCyePJkydbkqynn3661HZXXHGFZbPZrG3btpU8J8kKCAgo9dyaNWssSdZbb7113LH+6vXXX7ckWePGjSt5Lj8/3+rRo4cVGhpa6nNPSEiwLrroojL399dMTqfT2rlzZ8lz//3vfy1JVlxcXKn9PvTQQ5akkm1dLpeVmJhoDRgwwHK5XCXbZWdnW02bNrXOO++8kudeeumlUq/9q+zs7OOeGzBggNWsWbMKfQ7lHSMtLc0KDAy0HnzwwVLPjxo1ygoJCbEyMzMty7KsnTt3WpKsoKAga9++fSXbLV261JJk3XvvvZXKA6BqOKULuInQ0NAyr9aNjIyUJE2ZMkUul6tKx3A6nRo+fHiFt7/xxhsVFhZW8viKK65QfHy8pk+fXqXjV9T06dPlcDg0atSoUs/fd999sixLM2bMKPV8//791bx585LHHTt2VHh4uHbs2FHuceLi4nTNNdeUPOfv769Ro0YpMzNT8+bNq/Ln0K9fv1Knqc844wxJ0pAhQ0p9Tf98/s+sq1ev1tatW3Xttdfq6NGjSk5OVnJysrKystSvXz/Nnz+/Qn//fx2BTU9PV3Jysnr37q0dO3YoPT29yp/XnyIiInTppZfqq6++KjnNXlRUpPHjx2vw4MEKCQkptf3gwYPVoEGDksfdu3fXGWecUePfSwCKUfgAN5GZmVmqCPzdVVddpZ49e+qWW25RbGysrr76ak2YMKFS5a9BgwaVukAjMTGx1GObzaYWLVqUOX+tOuzevVv169c/7uvRpk2bko//VePGjY/bR1RUlFJTU8s9TmJiouz20j8KT3acyvh7poiICElSo0aNTvj8n1m3bt0qSbrpppsUExNT6u3DDz9UXl5ehQrbokWL1L9/f4WEhCgyMlIxMTElczaro/BJxf8h2LNnjxYsWCBJ+vnnn3Xo0KETLlnz9+8lSWrZsmWNfy8BKMYcPsAN7Nu3T+np6WrRosVJtwkKCtL8+fM1Z84cTZs2TTNnztT48ePVt29fzZo1Sw6Ho9zjVGbeXUWdbHHooqKiCmWqDic7jvW3Czxq08kylZf1zwL/0ksvqXPnzifcNjQ0tMxjb9++Xf369VPr1q316quvqlGjRgoICND06dP12muvVXmE+O8GDBig2NhYjRs3Tuecc47GjRunuLg49e/fv1r2D6D6UPgAN/D5559LUsmVjSdjt9vVr18/9evXT6+++qqeffZZPfLII5ozZ4769+9f7Xfm+HO06U+WZWnbtm3q2LFjyXNRUVEnXKNt9+7datasWcnjymRLSEjQzz//rIyMjFKjfJs2bSr5eHVISEjQ2rVr5XK5So3yVfdxKuPPU9Ph4eHlFqeTfU2///575eXlaerUqaVGGufMmVPpPGX9vTkcDl177bUaO3asXnjhBU2ePFm33nrrCUvt37+XJGnLli1uf4cVwFtwShcwbPbs2XrqqafUtGlTXXfddSfdLiUl5bjn/hwBysvLk6SSeVPVtUjun1dW/mnSpElKSkrSwIEDS55r3ry5lixZovz8/JLnfvjhh+OWb6lMtgsvvFBFRUV6++23Sz3/2muvyWazlTr+qbjwwgt18OBBjR8/vuS5wsJCvfXWWwoNDVXv3r2r5TiVcfrpp6t58+Z6+eWXlZmZedzHjxw5UvLnk31N/yxcfx3hTE9P1yeffFLpPOX9vd1www1KTU3V7bffrszMTF1//fUn3G7y5Mnav39/yePffvtNS5curba/SwBlY4QPqEUzZszQpk2bVFhYqEOHDmn27Nn66aeflJCQoKlTpyowMPCkr33yySc1f/58XXTRRUpISNDhw4f1zjvvqGHDhjr77LMlFZevyMhIvffeewoLC1NISIjOOOMMNW3atEp569Spo7PPPlvDhw/XoUOH9Prrr6tFixallo655ZZbNGnSJF1wwQUaOnSotm/frnHjxpW6iKKy2S655BL16dNHjzzyiHbt2qVOnTpp1qxZmjJliu65557j9l1Vt912m/773/9q2LBhWrFihZo0aaJJkyZp0aJFev3118ucU1lT7Ha7PvzwQw0cOFDt2rXT8OHD1aBBA+3fv19z5sxReHi4vv/+e0kqudvHI488oquvvlr+/v665JJLdP755ysgIECXXHJJSRH74IMPVK9ePSUlJVUqz8mO8WcRPO2009S+fXtNnDhRbdq0UZcuXU64nxYtWujss8/WHXfcoby8PL3++uuKjo7Wv//976p+qQBUhslLhAFf8eeyLH++BQQEWHFxcdZ5551nvfHGG6WW6fjT35dl+eWXX6xLL73Uql+/vhUQEGDVr1/fuuaaa6wtW7aUet2UKVOstm3bWn5+fqWWQendu7fVrl27E+Y72bIsX331lfXQQw9Z9erVs4KCgqyLLrrI2r1793Gvf+WVV6wGDRpYTqfT6tmzp7V8+fLj9llWtr8vy2JZlpWRkWHde++9Vv369S1/f38rMTHReumll0otVWJZxUug3HXXXcdlOtlyMX936NAha/jw4VbdunWtgIAAq0OHDidcOqayy7L8PdOfy5O89NJLpZ7/82s9ceLEUs+vWrXKuvzyy63o6GjL6XRaCQkJ1tChQ61ffvml1HZPPfWU1aBBA8tut5daPmXq1KlWx44drcDAQKtJkybWCy+8YH388ccnXcalLCc7xp9efPFFS5L17LPPHvfav37er7zyitWoUSPL6XRavXr1stasWVOpHACqzmZZBmc1AwA83htvvKF7771Xu3btOu7q5F27dqlp06Z66aWXdP/99xtKCIA5fACAKrMsSx999JF69+59wuVxALgH5vABgA/KzMw84UUhfxUTE3PSZWSysrI0depUzZkzR+vWrdOUKVNqIiaAakLhAwAf9PLLL+uJJ54oc5udO3eedNmUI0eO6Nprr1VkZKQefvhhDRo0qAZSAqguzOEDAB+0Y8eOcm89d/bZZ5d55TgAz0HhAwAA8HJctAEAAODlKHwAAABejsIHAADg5Sh8AAAAXo7CBwAA4OUofAAAAF6OwgcAAODlKHwAAABejsIHAADg5Sh8AAAAXo7CBwAA4OUofAAAAF6OwgcAAODlKHwAAABejsIHAADg5Sh8AAAAXo7CBwAA4OUofAAAAF6OwgcAAODlKHwAAABejsIHAADg5Sh8AAAAXo7CBwAA4OUofAAAAF6OwgcAAODlKHwAAABejsIHAADg5Sh8AAAAXo7CBwAA4OUofAAAAF6OwgcAAODlKHwAAABejsIHAADg5Sh8AAAAXo7CBwAA4OUofAAAAF6OwgcAAODlKHwAAABejsIHAADg5Sh8AAAAXo7CBwAA4OUofAAAAF6OwgcAAODlKHwAAABejsIHAADg5Sh8AAAAXo7CBwAA4OUofAAAAF6OwgcAAODlKHwAAABejsIHAADg5Sh8AAAAXo7CB5+za9cu2Ww2rV692nQUAABqBYUPNerIkSO644471LhxYzmdTsXFxWnAgAFatGhRrRx/2LBhGjx4cKnnGjVqpKSkJLVv375WMgAAYJqf6QDwbkOGDFF+fr4+/fRTNWvWTIcOHdIvv/yio0ePGsvkcDgUFxdn7PgAANQ2RvhQY9LS0rRgwQK98MIL6tOnjxISEtS9e3c99NBDGjRokCRpz549uvTSSxUaGqrw8HANHTpUhw4dKtnHmDFj1LlzZ33++edq0qSJIiIidPXVVysjI6Nkm0mTJqlDhw4KCgpSdHS0+vfvr6ysLI0ZM0affvqppkyZIpvNJpvNprlz557wlO7UqVOVmJiowMBA9enTR59++qlsNpvS0tJKtlm4cKF69eqloKAgNWrUSKNGjVJWVlbJx995552SfcTGxuqKK66ouS8uAACVQOFDjQkNDVVoaKgmT56svLy84z7ucrl06aWXKiUlRfPmzdNPP/2kHTt26Kqrriq13fbt2zV58mT98MMP+uGHHzRv3jw9//zzkqSkpCRdc801uvnmm7Vx40bNnTtXl19+uSzL0v3336+hQ4fqggsuUFJSkpKSknTWWWcdl2Pnzp264oorNHjwYK1Zs0a33367HnnkkeMyXHDBBRoyZIjWrl2r8ePHa+HChRo5cqQkafny5Ro1apSefPJJbd68WTNnztQ555xTXV9KAABOjQXUoEmTJllRUVFWYGCgddZZZ1kPPfSQtWbNGsuyLGvWrFmWw+Gw9uzZU7L977//bkmyfvvtN8uyLGv06NFWcHCwdezYsZJtHnjgAeuMM86wLMuyVqxYYUmydu3adcLj33TTTdall15a6rmdO3dakqxVq1ZZlmVZDz74oNW+fftS2zzyyCOWJCs1NdWyLMsaMWKEddttt5XaZsGCBZbdbrdycnKsb775xgoPDy+VEwAAd8EIH2rUkCFDdODAAU2dOlUXXHCB5s6dqy5dumjs2LHauHGjGjVqpEaNGpVs37ZtW0VGRmrjxo0lzzVp0kRhYWElj+Pj43X48GFJUqdOndSvXz916NBBV155pT744AOlpqZWKuPmzZvVrVu3Us9179691OM1a9Zo7NixJaOWoaGhGjBggFwul3bu3KnzzjtPCQkJatasmW644QZ98cUXys7OrlQOAABqCoUPNS4wMFDnnXeeHnvsMS1evFjDhg3T6NGjK/x6f3//Uo9tNptcLpek4gswfvrpJ82YMUNt27bVW2+9pVatWmnnzp3V+jlkZmbq9ttv1+rVq0ve1qxZo61bt6p58+YKCwvTypUr9dVXXyk+Pl6PP/64OnXqVGoOIAAAplD4UOvatm2rrKwstWnTRnv37tXevXtLPrZhwwalpaWpbdu2Fd6fzWZTz5499cQTT2jVqlUKCAjQd999J0kKCAhQUVFRma9v1aqVli9fXuq5ZcuWlXrcpUsXbdiwQS1atDjuLSAgQJLk5+en/v3768UXX9TatWu1a9cuzZ49u8KfBwAANYXChxpz9OhR9e3bV+PGjdPatWu1c+dOTZw4US+++KIuvfRS9e/fXx06dNB1112nlStX6rffftONN96o3r17q2vXrhU6xtKlS/Xs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Vq3SY489phUrVmjo0KG6+uqrtW7dOo0ZM0aPPfbYccXy769bunSpRowYoZEjR2r16tXq06ePnn766eNyb9++XZMnT9YPP/ygH374QfPmzdPzzz9f6c//iSee0NChQ7V27VpdeOGFuu6665SSkiJJ2rlzp6644goNHjxYa9as0e23365HHnmk0scAUEEWAKDGbNy40ZJkzZkzp+S5Xr16Wddff701YsQI67bbbiu1/YIFCyy73W7l5ORYlmVZCQkJ1uDBg0ttc+2111rnnXdeqeceeOABq23btiWPT/S6a665xrrwwgtLPXfVVVdZERERJY9Hjx5tBQcHW8eOHSu17zPOOKPUvl977bVS++nUqZM1evTokseSrEcffbTkcWZmpiXJmjFjhmVZlvXggw9a7du3L7WPRx55xJJkpaamWgCqFyN8AFCDWrdurbPOOksff/yxJGnbtm1asGCBRowYoTVr1mjs2LEKDQ0teRswYIBcLpd27txZso+uXbuW2ufGjRvVs2fPUs/17NlTW7duVVFRUZmvO+OMM0o916NHj+MyN2nSRGFhYSWP4+Pjdfjw4Up+5io1PzEkJETh4eEl+9m8ebO6detWavvu3btX+hgAKsbPdAAA8HYjRozQP//5T/3nP//RJ598oubNm6t3797KzMzU7bffrlGjRh33msaNG5f8OSQkpErHrerr/P39Sz222WxyuVwlj+12e6lT1JJUUFBQ6f0AqD0UPgCoYUOHDtXdd9+tL7/8Up999pnuuOMO2Ww2denSRRs2bFCLFi0qtb82bdpo0aJFpZ5btGiRWrZsKYfDUebrli5dWuq5JUuWVOrYkhQTE6OkpKSSx8eOHSs1IlkRrVq10vTp00s9t2zZskpnAVAxnNIFgBoWGhqqq666Sg899JCSkpI0bNgwSdKDDz6oxYsXl1xEsXXrVk2ZMuW4izb+7r777tMvv/yip556Slu2bNGnn36qt99+W/fff3+Zrxs1apRmzpypl19+WVu3btXbb7+tmTNnVvrz6du3rz7//HMtWLBA69at00033VRm0TyR22+/XZs2bdKDDz6oLVu2aMKECSUXndhstkpnAlA2Ch8A1IIRI0YoNTVVAwYMUP369SUVz3GbN2+etmzZol69eum0007T448/XvLxk+nSpYsmTJigr7/+Wu3bt9fjjz+uJ598sqRInsyZZ56pDz74QG+88YY6deqkWbNm6dFHH6305/LQQw+pd+/euvjii3XRRRdp8ODBat68eaX20bRpU02aNEnffvutOnbsqHfffbfkKl2n01npTADKZrP+PhEDAAADnnnmGb333nvau3ev6SiA12EOHwDAiHfeeUfdunVTdHS0Fi1apJdeeqnc09kAqobCBwAwYuvWrXr66aeVkpKixo0b67777tNDDz1kOhbglTilCwAA4OW4aAMAAMDLUfgAAAC8HIUPAADAy1H4AAAAvByFDwAAwMtR+AAAALwchQ8AAMDLUfgAAAC8HIUPAADAy1H4AAAAvByFDwAAwMtR+AAAALwchQ8AAMDLUfgAAAC8HIUPAADAy1H4AAAAvByFDwAAwMtR+AAAALwchQ8AAMDLUfgAAAC8HIUPAADAy1H4AAAAvByFDwAAwMtR+AAAALwchQ8AAMDLUfgAAAC8HIUPAADAy1H4AAAAvByFDwAAwMtR+AAAALwchQ8AAMDLUfgAAAC8HIUPAADAy1H4AAAAvByFDwAAwMtR+AAAALwchQ8AAMDLUfgAAAC8HIUPAADAy1H4AAAAvNz/Ayq9qIU0U6xnAAAAAElFTkSuQmCC",
604
- "text/plain": [
605
- "<Figure size 800x800 with 1 Axes>"
606
- ]
607
- },
608
- "metadata": {},
609
- "output_type": "display_data"
610
- }
611
- ],
612
  "source": [
613
  "# prompt: stelle die spalte meta_typ dar als kreisdiagramm\n",
614
  "\n",
@@ -640,7 +272,7 @@
640
  },
641
  {
642
  "cell_type": "code",
643
- "execution_count": 49,
644
  "metadata": {
645
  "colab": {
646
  "base_uri": "https://localhost:8080/"
@@ -648,33 +280,7 @@
648
  "id": "R-XQ7G5SVi1M",
649
  "outputId": "94d62053-e158-4cb9-98c0-265b094b1472"
650
  },
651
- "outputs": [
652
- {
653
- "name": "stdout",
654
- "output_type": "stream",
655
- "text": [
656
- "Fünfzehnte Verordnung zur Änderung der Sozialversicherungsentgeltverordnung\n",
657
- "Verordnung zur Änderung der Gefahrstoffverordnung und anderer Arbeitsschutzverordnungen\n",
658
- "Fünfte Verordnung zur Änderung der Verwaltungskostenfeststellungsverordnung\n",
659
- "Verordnung zur Neufestsetzung der Neurenten-Faktoren und zur Übertragung der Verordnungsermächtigung auf das Bundesamt für Soziale Sicherung\n",
660
- "Vierte Verordnung zur Änderung der Verordnung zur Durchführung des Bundesdisziplinargesetzes bei den bundesunmittelbaren Körperschaften mit Dienstherrnfähigkeit im Geschäftsbereich des Bundesministeriums für Arbeit und Soziales\n",
661
- "Bekanntmachung der Beitragssätze in der allgemeinen Rentenversicherung und der knappschaftlichen Rentenversicherung für das Jahr 2025\n",
662
- "Verordnung über maßgebende Rechengrößen der Sozialversicherung für 2025\n",
663
- "Sechste Verordnung über eine Lohnuntergrenze in der Arbeitnehmerüberlassung\n",
664
- "Bekanntmachung über die Höhe der Leistungssätze nach § 3a Absatz 4 des Asylbewerberleistungsgesetzes für die Zeit ab 1. Januar 2025\n",
665
- "Bekanntmachung zur Umsetzung der Richtlinie (EU) 2022/2041 des Europäischen Parlaments und des Rates vom 19. Oktober 2022 über angemessene Mindestlöhne in der Europäischen Union\n",
666
- "Verordnung zur Bestimmung der für die Fortschreibung der Regelbedarfsstufen nach § 28a und für die Fortschreibung des Teilbetrags nach § 34 Absatz 3a Satz 1 des Zwölften Buches Sozialgesetzbuch maßgeblichen Prozentsätze sowie zur Ergänzung der Anlage zu §§ 28 und 34 des Zwölften Buches Sozialgesetzbuch für das Jahr 2025\n",
667
- "Verordnung zur Änderung der Entgeltbescheinigungsverordnung und der Beitragsverfahrensverordnung\n",
668
- "Dritte Verordnung über zwingende Arbeitsbedingungen für Sicherheitskräfte an Verkehrsflughäfen\n",
669
- "Künstlersozialabgabe-Verordnung 2025\n",
670
- "Zwölfte Verordnung zur Änderung der Bürgergeld-Verordnung\n",
671
- "Zweites Gesetz zur Änderung des Betriebsverfassungsgesetzes\n",
672
- "Verordnung zur Festlegung und Anpassung der Bundesbeteiligung an den Leistungen für Unterkunft und Heizung für das Jahr 2024\n",
673
- "Verordnung zur Anpassung der Entschädigungszahlungen nach dem Vierzehnten Buch Sozialgesetzbuch\n",
674
- "Verordnung zur Bestimmung des Rentenwerts in der gesetzlichen Rentenversicherung und zur Bestimmung weiterer Werte zum 1. Juli 2024\n"
675
- ]
676
- }
677
- ],
678
  "source": [
679
  "# prompt:\n",
680
  "\n",
@@ -698,7 +304,7 @@
698
  },
699
  {
700
  "cell_type": "code",
701
- "execution_count": 51,
702
  "metadata": {
703
  "colab": {
704
  "base_uri": "https://localhost:8080/"
@@ -706,27 +312,7 @@
706
  "id": "J7IQcy_JV48Z",
707
  "outputId": "cfb452be-7a34-4db7-ab6a-95f17f43292b"
708
  },
709
- "outputs": [
710
- {
711
- "name": "stdout",
712
- "output_type": "stream",
713
- "text": [
714
- "Dritte Verordnung zur Änderung der Coronavirus-Impfverordnung und der Coronavirus-Testverordnung\n",
715
- "Vierundzwanzigste Verordnung zur Änderung von Anlagen des Betäubungsmittelgesetzes\n",
716
- "Verordnung zur Änderung der Approbationsordnung für Zahnärzte und Zahnärztinnen und weiterer Verordnungen im Bereich der Heilberufe\n",
717
- "Fünfte Verordnung zur Änderung der Pflegepersonaluntergrenzen-Verordnung\n",
718
- "Medizinforschungsgesetz\n",
719
- "Zweite Verordnung zur Änderung der Implantateregister-Betriebsverordnung\n",
720
- "Zweite Verordnung zur Änderung der Approbationsordnung für Psychotherapeutinnen und Psychotherapeuten\n",
721
- "Gesundheits-IT-Interoperabilitäts-Governance-Verordnung\n",
722
- "Verordnung zum Anspruch auf Maßnahmen der spezifischen Prophylaxe gegen Respiratorische Synzytial Viren\n",
723
- "Verordnung zum Modellvorhaben zur umfassenden Diagnostik und Therapiefindung mittels Genomsequenzierung bei seltenen und bei onkologischen Erkrankungen\n",
724
- "Fünfte Verordnung zur Änderung der Anlage des Neue-psychoaktive-Stoffe-Gesetzes\n",
725
- "Gesetz zur Änderung des Konsumcannabisgesetzes und des Medizinal-Cannabisgesetzes\n",
726
- "Verordnung über die Grundsätze der Personalbedarfsbemessung in der stationären Krankenpflege\n"
727
- ]
728
- }
729
- ],
730
  "source": [
731
  "# prompt: welche titel haben die einträge im dataframe df für die spalte meta_initiant Bundesministerium für Gesundheit zeige jeden eintrag in einer separaten zeile\n",
732
  "\n",
 
41
  },
42
  {
43
  "cell_type": "code",
44
+ "execution_count": null,
45
  "metadata": {
46
  "colab": {
47
  "base_uri": "https://localhost:8080/"
 
49
  "id": "d-v9mlTtOzcL",
50
  "outputId": "1c7b64fe-35df-40c2-f715-86fbc0b3d2fe"
51
  },
52
+ "outputs": [],
 
 
 
 
 
 
 
 
 
53
  "source": [
54
  "# prompt: installiere die bibliothek feedparser\n",
55
  "\n",
 
114
  },
115
  {
116
  "cell_type": "code",
117
+ "execution_count": null,
118
  "metadata": {
119
  "colab": {
120
  "base_uri": "https://localhost:8080/",
 
123
  "id": "Y0HqRhRhS0ys",
124
  "outputId": "da1c6f82-ff69-47d0-df35-9005bf1daf3e"
125
  },
126
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  "source": [
128
  "# prompt: bitte stelle den ersten eintrag des dataframe dar\n",
129
  "\n",
 
140
  },
141
  {
142
  "cell_type": "code",
143
+ "execution_count": null,
144
  "metadata": {
145
  "colab": {
146
  "base_uri": "https://localhost:8080/"
 
148
  "id": "3jmt9tybTMLb",
149
  "outputId": "b1d40007-7567-488f-c3de-d3dccfe4b7e4"
150
  },
151
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
152
  "source": [
153
  "# prompt: wie groß ist das dataframe?\n",
154
  "\n",
 
165
  },
166
  {
167
  "cell_type": "code",
168
+ "execution_count": null,
169
  "metadata": {
170
  "colab": {
171
  "base_uri": "https://localhost:8080/",
 
174
  "id": "atYQfhdMTTCa",
175
  "outputId": "c0f9be5e-3a2c-4074-c2e5-39692e1dee10"
176
  },
177
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  "source": [
179
  "# prompt: stelle die häufigkeitenverteilung der spalte meta_initiant dar\n",
180
  "\n",
 
191
  },
192
  {
193
  "cell_type": "code",
194
+ "execution_count": null,
195
  "metadata": {
196
  "colab": {
197
  "base_uri": "https://localhost:8080/",
 
200
  "id": "dmvjRjFPTf9V",
201
  "outputId": "6b91dc32-5d00-42cb-8b79-4a36bbf42b45"
202
  },
203
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
204
  "source": [
205
  "# prompt: visualisiere die spalte published\n",
206
  "\n",
 
231
  },
232
  {
233
  "cell_type": "code",
234
+ "execution_count": null,
235
  "metadata": {
236
  "colab": {
237
  "base_uri": "https://localhost:8080/",
 
240
  "id": "huFY2Qs9T0rt",
241
  "outputId": "a1f59b96-083a-4b71-ee55-30b36deb3072"
242
  },
243
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
244
  "source": [
245
  "# prompt: stelle die spalte meta_typ dar als kreisdiagramm\n",
246
  "\n",
 
272
  },
273
  {
274
  "cell_type": "code",
275
+ "execution_count": null,
276
  "metadata": {
277
  "colab": {
278
  "base_uri": "https://localhost:8080/"
 
280
  "id": "R-XQ7G5SVi1M",
281
  "outputId": "94d62053-e158-4cb9-98c0-265b094b1472"
282
  },
283
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
  "source": [
285
  "# prompt:\n",
286
  "\n",
 
304
  },
305
  {
306
  "cell_type": "code",
307
+ "execution_count": null,
308
  "metadata": {
309
  "colab": {
310
  "base_uri": "https://localhost:8080/"
 
312
  "id": "J7IQcy_JV48Z",
313
  "outputId": "cfb452be-7a34-4db7-ab6a-95f17f43292b"
314
  },
315
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
316
  "source": [
317
  "# prompt: welche titel haben die einträge im dataframe df für die spalte meta_initiant Bundesministerium für Gesundheit zeige jeden eintrag in einer separaten zeile\n",
318
  "\n",
src/04_use_case_bonus/podcasts/_b34a92c5-b284-42a5-8c8c-aefe2c00eb0b.jpeg ADDED
src/04_use_case_bonus/podcasts/aggregate_podcast_episodes_to_markdown.ipynb ADDED
@@ -0,0 +1,602 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "---\n",
8
+ "title: \"Podcast-Episoden aggregieren\"\n",
9
+ "description: \"Podcast-Episoden von Webseiten herunterladen, die Daten analysieren und bereinigen und schließlich in Markdown exportieren.\"\n",
10
+ "image: _b34a92c5-b284-42a5-8c8c-aefe2c00eb0b.jpeg\n",
11
+ "---"
12
+ ]
13
+ },
14
+ {
15
+ "cell_type": "markdown",
16
+ "metadata": {},
17
+ "source": [
18
+ "## Lernziele\n",
19
+ "\n",
20
+ "Du wirst lernen, wie du mit Python und der requests-Bibliothek Webseiten herunterlädst und mit BeautifulSoup HTML-Inhalte analysierst. Außerdem wirst du lernen, wie du Fehler in deinem Code behandelst und Dateien effizient liest und schreibst. Zusätzlich wirst du Daten bereinigen und verarbeiten, DataFrames mit Pandas erstellen und bearbeiten sowie Daten ins Markdown-Format exportieren."
21
+ ]
22
+ },
23
+ {
24
+ "cell_type": "markdown",
25
+ "metadata": {},
26
+ "source": [
27
+ "[![](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/#fileId=https://huggingface.co/spaces/datenwerkzeuge/CDL-Webscraping-Workshop-2025/src/04_use_case/podcasts/aggregate_podcast_episodes_to_markdown.ipynb)"
28
+ ]
29
+ },
30
+ {
31
+ "cell_type": "markdown",
32
+ "metadata": {},
33
+ "source": [
34
+ "## Requesting"
35
+ ]
36
+ },
37
+ {
38
+ "cell_type": "markdown",
39
+ "metadata": {},
40
+ "source": [
41
+ "In dieser Zelle wird ein Python-Skript definiert, das die Webseite \"https://fyyd.de/search?page=0&search=digitalisierung\" herunterlädt und als HTML-Datei speichert. Es verwendet die requests-Bibliothek für den Download und behandelt mögliche Fehler während des Prozesses."
42
+ ]
43
+ },
44
+ {
45
+ "cell_type": "code",
46
+ "execution_count": null,
47
+ "metadata": {
48
+ "colab": {
49
+ "base_uri": "https://localhost:8080/"
50
+ },
51
+ "id": "selanRm9aGQQ",
52
+ "outputId": "3b8dc3b3-59a5-465a-cf82-d38da5fe7f1f"
53
+ },
54
+ "outputs": [],
55
+ "source": [
56
+ "# prompt: bitte erstelle python code der die seite https://fyyd.de/search?page=0&search=digitalisierung herunterlädt und als html speichert\n",
57
+ "\n",
58
+ "import requests\n",
59
+ "from bs4 import BeautifulSoup\n",
60
+ "\n",
61
+ "def download_and_save_html(url, filename=\"downloaded_page.html\"):\n",
62
+ " try:\n",
63
+ " response = requests.get(url)\n",
64
+ " response.raise_for_status() # Raise an exception for bad status codes\n",
65
+ "\n",
66
+ " with open(filename, \"w\", encoding=\"utf-8\") as file:\n",
67
+ " file.write(response.text)\n",
68
+ " print(f\"Page downloaded and saved as {filename}\")\n",
69
+ "\n",
70
+ " except requests.exceptions.RequestException as e:\n",
71
+ " print(f\"An error occurred: {e}\")\n",
72
+ " except Exception as e:\n",
73
+ " print(f\"An unexpected error occurred: {e}\")\n",
74
+ "\n",
75
+ "if __name__ == \"__main__\":\n",
76
+ " url = \"https://fyyd.de/search?page=0&search=digitalisierung\"\n",
77
+ " download_and_save_html(url)"
78
+ ]
79
+ },
80
+ {
81
+ "cell_type": "markdown",
82
+ "metadata": {},
83
+ "source": [
84
+ "## Scraping"
85
+ ]
86
+ },
87
+ {
88
+ "cell_type": "markdown",
89
+ "metadata": {},
90
+ "source": [
91
+ "In dieser Zelle wird ein Python-Skript definiert, das die Datei \"downloaded_page.html\" öffnet und alle Links daraus extrahiert. Es verwendet die `BeautifulSoup`-Bibliothek zur HTML-Analyse und speichert die extrahierten Links in einer Liste."
92
+ ]
93
+ },
94
+ {
95
+ "cell_type": "code",
96
+ "execution_count": 2,
97
+ "metadata": {
98
+ "id": "ickyBTfMamz1"
99
+ },
100
+ "outputs": [],
101
+ "source": [
102
+ "# prompt: schreibe python code der die datei downloaded_page.html öffnet und alle links extrahiert und in einer variablen speichert\n",
103
+ "\n",
104
+ "import requests\n",
105
+ "from bs4 import BeautifulSoup\n",
106
+ "\n",
107
+ "def extract_links(filename=\"downloaded_page.html\"):\n",
108
+ " try:\n",
109
+ " with open(filename, \"r\", encoding=\"utf-8\") as file:\n",
110
+ " html_content = file.read()\n",
111
+ "\n",
112
+ " soup = BeautifulSoup(html_content, \"html.parser\")\n",
113
+ " links = []\n",
114
+ " for link in soup.find_all(\"a\", href=True):\n",
115
+ " links.append(link[\"href\"])\n",
116
+ " return links\n",
117
+ " except FileNotFoundError:\n",
118
+ " print(f\"Error: File '{filename}' not found.\")\n",
119
+ " return None\n",
120
+ " except Exception as e:\n",
121
+ " print(f\"An unexpected error occurred: {e}\")\n",
122
+ " return None\n",
123
+ "\n",
124
+ "if __name__ == \"__main__\":\n",
125
+ " extracted_links = extract_links()\n"
126
+ ]
127
+ },
128
+ {
129
+ "cell_type": "markdown",
130
+ "metadata": {},
131
+ "source": [
132
+ "## Cleaning"
133
+ ]
134
+ },
135
+ {
136
+ "cell_type": "markdown",
137
+ "metadata": {},
138
+ "source": [
139
+ "In dieser Zelle wird eine Liste episode_links erstellt, die alle Links aus der Variable extracted_links speichert, die den String \"/episode/\" enthalten. Es wird überprüft, ob jeder Link ein String ist und das Muster \"/episode/\" enthält, bevor er zur Liste hinzugefügt wird."
140
+ ]
141
+ },
142
+ {
143
+ "cell_type": "code",
144
+ "execution_count": 3,
145
+ "metadata": {
146
+ "id": "os23OZVYYUyH"
147
+ },
148
+ "outputs": [],
149
+ "source": [
150
+ "# prompt: schreibe python code der aus der variablen extracted_links alle string in einer liste ablegt die /episode/ beinhalten\n",
151
+ "\n",
152
+ "episode_links = []\n",
153
+ "if extracted_links:\n",
154
+ " for link in extracted_links:\n",
155
+ " if isinstance(link, str) and \"/episode/\" in link:\n",
156
+ " episode_links.append(link)"
157
+ ]
158
+ },
159
+ {
160
+ "cell_type": "markdown",
161
+ "metadata": {},
162
+ "source": [
163
+ "In dieser Zelle wird eine Liste cleaned_episode_links erstellt, die alle Links aus episode_links in das Format https://fyyd.de/episode/xxxxxxxxx/ umwandelt. Dabei werden Links, die mit /episode/ beginnen, entsprechend ergänzt, und Links mit /transcript werden bereinigt, um das gewünschte Format zu erreichen."
164
+ ]
165
+ },
166
+ {
167
+ "cell_type": "code",
168
+ "execution_count": null,
169
+ "metadata": {
170
+ "colab": {
171
+ "base_uri": "https://localhost:8080/"
172
+ },
173
+ "id": "Enb0NoKxb9x1",
174
+ "outputId": "a88e0efd-35be-43d2-8f98-df52161023b7"
175
+ },
176
+ "outputs": [],
177
+ "source": [
178
+ "# prompt: reinige die strings in episode_links sodass aus '/episode/13289098', '/episode/4591809', '/episode/10661740', 'https://fyyd.de/episode/10661740/transcript#t4514', '/episode/13287710', '/episode/13289210', strings in folgendem format werden 'https://fyyd.de/episode/xxxxxxxxx/'\n",
179
+ "\n",
180
+ "cleaned_episode_links = []\n",
181
+ "for link in episode_links:\n",
182
+ " if link.startswith('/episode/'):\n",
183
+ " cleaned_episode_links.append(f\"https://fyyd.de{link}\")\n",
184
+ " elif \"https://fyyd.de/episode/\" in link:\n",
185
+ " cleaned_episode_links.append(link.split(\"/transcript\")[0] + \"/\") # handles transcript links\n",
186
+ " else:\n",
187
+ " cleaned_episode_links.append(link) # keep links that are already in correct format\n",
188
+ "\n",
189
+ "len(cleaned_episode_links)"
190
+ ]
191
+ },
192
+ {
193
+ "cell_type": "markdown",
194
+ "metadata": {},
195
+ "source": [
196
+ "In dieser Zelle wird die Liste cleaned_episode_links in ein Set umgewandelt, um doppelte Einträge zu entfernen, und dann wieder in eine Liste konvertiert. Anschließend wird die Länge des Sets berechnet, um die Anzahl der eindeutigen Links in cleaned_episode_links zu ermitteln."
197
+ ]
198
+ },
199
+ {
200
+ "cell_type": "code",
201
+ "execution_count": null,
202
+ "metadata": {
203
+ "colab": {
204
+ "base_uri": "https://localhost:8080/"
205
+ },
206
+ "id": "20k_pz_rjDGI",
207
+ "outputId": "86248903-3bd1-42b4-b6a2-3e5bf6734671"
208
+ },
209
+ "outputs": [],
210
+ "source": [
211
+ "cleaned_episode_links = list(set(cleaned_episode_links))\n",
212
+ "\n",
213
+ "len(set(cleaned_episode_links))"
214
+ ]
215
+ },
216
+ {
217
+ "cell_type": "markdown",
218
+ "metadata": {},
219
+ "source": [
220
+ "In dieser Zelle wird ein Python-Skript erstellt, das über alle Links in cleaned_episode_links iteriert und die HTML-Antworten in einem Ordner speichert. Für jeden Link wird eine HTTP-Anfrage gesendet, und die Antwort wird in einer Datei gespeichert, deren Name die Episoden-ID und einen Index enthält. Der Ordner episode_html wird erstellt, falls er noch nicht existiert, und Fehler während des Downloads werden behandelt und ausgegeben."
221
+ ]
222
+ },
223
+ {
224
+ "cell_type": "markdown",
225
+ "metadata": {},
226
+ "source": [
227
+ "## Zweites Requesting"
228
+ ]
229
+ },
230
+ {
231
+ "cell_type": "code",
232
+ "execution_count": null,
233
+ "metadata": {
234
+ "colab": {
235
+ "base_uri": "https://localhost:8080/"
236
+ },
237
+ "id": "VAKuiS8ocXgM",
238
+ "outputId": "22799ae8-1f33-49b8-8746-a3bea4a73708"
239
+ },
240
+ "outputs": [],
241
+ "source": [
242
+ "# prompt: iteriere über alle links in cleaned_episode_links und speichere die html antworten in einem ordner füge die episode id als in den dateiname ein\n",
243
+ "\n",
244
+ "import requests\n",
245
+ "from bs4 import BeautifulSoup\n",
246
+ "import os\n",
247
+ "\n",
248
+ "# ... (your existing code) ...\n",
249
+ "\n",
250
+ "\n",
251
+ "def download_and_save_html(url, filename=\"downloaded_page.html\"):\n",
252
+ " try:\n",
253
+ " response = requests.get(url)\n",
254
+ " response.raise_for_status() # Raise an exception for bad status codes\n",
255
+ "\n",
256
+ " with open(filename, \"w\", encoding=\"utf-8\") as file:\n",
257
+ " file.write(response.text)\n",
258
+ " print(f\"Page downloaded and saved as {filename}\")\n",
259
+ "\n",
260
+ " except requests.exceptions.RequestException as e:\n",
261
+ " print(f\"An error occurred: {e}\")\n",
262
+ " except Exception as e:\n",
263
+ " print(f\"An unexpected error occurred: {e}\")\n",
264
+ "\n",
265
+ "\n",
266
+ "# Create the directory if it doesn't exist\n",
267
+ "if not os.path.exists(\"episode_html\"):\n",
268
+ " os.makedirs(\"episode_html\")\n",
269
+ "\n",
270
+ "for i, link in enumerate(cleaned_episode_links):\n",
271
+ " try:\n",
272
+ " response = requests.get(link)\n",
273
+ " response.raise_for_status()\n",
274
+ "\n",
275
+ " # Extract episode ID (you might need a more robust way to extract this)\n",
276
+ " episode_id = link.split(\"/\")[-2] if link.split(\"/\")[-1] == \"\" else link.split(\"/\")[-1] # handles trailing slashes\n",
277
+ "\n",
278
+ " filename = os.path.join(\"episode_html\", f\"episode_{episode_id}_{i}.html\") # Use episode ID in filename\n",
279
+ " with open(filename, \"w\", encoding=\"utf-8\") as f:\n",
280
+ " f.write(response.text)\n",
281
+ " print(f\"Downloaded {link} to {filename}\")\n",
282
+ " except requests.exceptions.RequestException as e:\n",
283
+ " print(f\"Error downloading {link}: {e}\")\n",
284
+ " except Exception as e:\n",
285
+ " print(f\"An unexpected error occurred while processing {link}: {e}\")"
286
+ ]
287
+ },
288
+ {
289
+ "cell_type": "markdown",
290
+ "metadata": {},
291
+ "source": [
292
+ "## Scraping"
293
+ ]
294
+ },
295
+ {
296
+ "cell_type": "markdown",
297
+ "metadata": {},
298
+ "source": [
299
+ "In dieser Zelle wird ein Python-Skript erstellt, das über alle HTML-Dateien in einem angegebenen Verzeichnis (output_dir) iteriert, die Dateinamen sortiert und bestimmte Informationen aus den HTML-Inhalten extrahiert.\n",
300
+ "\n",
301
+ "Das Skript beginnt mit dem Import der notwendigen Bibliotheken (pandas, os, BeautifulSoup und re). Es definiert eine Funktion process_html_files, die die HTML-Dateien im Verzeichnis episode_html verarbeitet.\n",
302
+ "\n",
303
+ "Die Funktion listet alle HTML-Dateien im Verzeichnis auf und sortiert sie. Für jede Datei wird der HTML-Inhalt gelesen und mit BeautifulSoup geparst.\n",
304
+ "\n",
305
+ "Es extrahiert den Titel der Seite aus dem <title>-Tag und das Datum und die Uhrzeit aus einem <span>-Tag mit einem title-Attribut, das das Wort \"importiert\" enthält. Die Episoden-ID wird aus dem Dateinamen extrahiert.\n",
306
+ "\n",
307
+ "Die extrahierten Daten (Titel, Datum und Uhrzeit, Episoden-ID) werden in einer Liste gespeichert und schließlich in ein Pandas DataFrame konvertiert. Das DataFrame wird zurückgegeben und kann weiter verwendet werden."
308
+ ]
309
+ },
310
+ {
311
+ "cell_type": "code",
312
+ "execution_count": null,
313
+ "metadata": {
314
+ "colab": {
315
+ "base_uri": "https://localhost:8080/",
316
+ "height": 424
317
+ },
318
+ "id": "Bq_GpCeec_3u",
319
+ "outputId": "efff9d49-a576-46e6-b2a0-cbe9f6b35f37"
320
+ },
321
+ "outputs": [],
322
+ "source": [
323
+ "# prompt: iteriere über alle html dateien in output_dir , sortiere die liste der dateinamen und extrahiere <title>fyyd: Studio 9: Welche Chancen bringt die elektronische Patientenakte?</title> und das datum und die uhrzeit aus <span title=\"importiert :17.03.2023 14:25\"> in ein pandas dataframe als title date episode id\n",
324
+ "\n",
325
+ "import pandas as pd\n",
326
+ "import os\n",
327
+ "from bs4 import BeautifulSoup\n",
328
+ "import re\n",
329
+ "\n",
330
+ "def process_html_files(output_dir=\"episode_html\"):\n",
331
+ " \"\"\"\n",
332
+ " Iterates through HTML files, extracts title, date, and time, and creates a Pandas DataFrame.\n",
333
+ " \"\"\"\n",
334
+ "\n",
335
+ " html_files = [f for f in os.listdir(output_dir) if f.endswith(\".html\")]\n",
336
+ " html_files.sort() # Sort filenames\n",
337
+ "\n",
338
+ " data = []\n",
339
+ " for filename in html_files:\n",
340
+ " filepath = os.path.join(output_dir, filename)\n",
341
+ " try:\n",
342
+ " with open(filepath, \"r\", encoding=\"utf-8\") as file:\n",
343
+ " html_content = file.read()\n",
344
+ "\n",
345
+ " soup = BeautifulSoup(html_content, \"html.parser\")\n",
346
+ "\n",
347
+ " # Extract title using regular expressions for robustness\n",
348
+ " title_tag = soup.find(\"title\")\n",
349
+ " if title_tag:\n",
350
+ " title_match = re.search(r\"<title>(.*?)</title>\", str(title_tag))\n",
351
+ " title = title_match.group(1) if title_match else None\n",
352
+ " else:\n",
353
+ " title = None\n",
354
+ "\n",
355
+ " # Extract date and time using find with span tag\n",
356
+ " date_time_span = soup.find(\"span\", attrs={\"title\":re.compile(r\"importiert\")})\n",
357
+ " if date_time_span and date_time_span[\"title\"]:\n",
358
+ " date_time_str = date_time_span[\"title\"].split(\":\", 1)[1] # split string at first \":\"\n",
359
+ " # date_time_str = date_time_span[\"title\"]\n",
360
+ " else:\n",
361
+ " date_time_str = None\n",
362
+ "\n",
363
+ " episode_id = filename.split(\"_\")[1] # extract episode ID from filename\n",
364
+ "\n",
365
+ "\n",
366
+ " data.append([title, date_time_str, episode_id])\n",
367
+ "\n",
368
+ " except FileNotFoundError:\n",
369
+ " print(f\"Error: File '{filename}' not found.\")\n",
370
+ " except Exception as e:\n",
371
+ " print(f\"An unexpected error occurred while processing {filename}: {e}\")\n",
372
+ "\n",
373
+ " df = pd.DataFrame(data, columns=[\"title\", \"date\", \"id\"])\n",
374
+ " return df\n",
375
+ "\n",
376
+ "# Example usage (assuming you have the episode_html directory)\n",
377
+ "df = process_html_files()\n",
378
+ "df"
379
+ ]
380
+ },
381
+ {
382
+ "cell_type": "markdown",
383
+ "metadata": {},
384
+ "source": [
385
+ "## Cleaning"
386
+ ]
387
+ },
388
+ {
389
+ "cell_type": "markdown",
390
+ "metadata": {},
391
+ "source": [
392
+ "In dieser Zelle wird der String \"fyyd: \" am Beginn jeder Zeile in der Spalte title des DataFrames df entfernt. Dies wird durch die Verwendung der str.replace-Methode erreicht, die den regulären Ausdruck ^fyyd: (der für \"fyyd: \" am Anfang eines Strings steht) durch einen leeren String ersetzt. Das Ergebnis wird in der Spalte title des DataFrames df gespeichert."
393
+ ]
394
+ },
395
+ {
396
+ "cell_type": "code",
397
+ "execution_count": null,
398
+ "metadata": {
399
+ "colab": {
400
+ "base_uri": "https://localhost:8080/",
401
+ "height": 424
402
+ },
403
+ "id": "1pWP9JU0hgRR",
404
+ "outputId": "7f8d131a-2c26-4c08-a8ec-eaf881e51315"
405
+ },
406
+ "outputs": [],
407
+ "source": [
408
+ "# prompt: entferne das \"fyyd: \" am beginn jeder reihe in df.title\n",
409
+ "\n",
410
+ "# Remove \"fyyd: \" from the beginning of each row in df.title\n",
411
+ "df['title'] = df['title'].str.replace(r'^fyyd: ', '', regex=True)\n",
412
+ "\n",
413
+ "df"
414
+ ]
415
+ },
416
+ {
417
+ "cell_type": "markdown",
418
+ "metadata": {},
419
+ "source": [
420
+ "## Datumsformatierung"
421
+ ]
422
+ },
423
+ {
424
+ "cell_type": "markdown",
425
+ "metadata": {},
426
+ "source": [
427
+ "In dieser Zelle wird die Spalte date im DataFrame df in Datetime-Objekte umgewandelt, wobei das Format %d.%m.%Y %H:%M verwendet wird. Fehlerhafte Datumsangaben werden dabei ignoriert (errors='coerce'). Anschließend wird der DataFrame nach der Spalte date in absteigender Reihenfolge sortiert, sodass die neuesten Daten zuerst erscheinen. Schließlich wird der aktualisierte DataFrame angezeigt."
428
+ ]
429
+ },
430
+ {
431
+ "cell_type": "code",
432
+ "execution_count": null,
433
+ "metadata": {
434
+ "colab": {
435
+ "base_uri": "https://localhost:8080/",
436
+ "height": 424
437
+ },
438
+ "id": "gzOPIUW3eqWe",
439
+ "outputId": "4884c18a-f38d-492e-db56-6f85b9bcd563"
440
+ },
441
+ "outputs": [],
442
+ "source": [
443
+ "# prompt: Using dataframe df: formatiere die spalte date und sortiere nach date beginnend beim jüngsten datum\n",
444
+ "\n",
445
+ "# Convert the 'date' column to datetime objects\n",
446
+ "df['date'] = pd.to_datetime(df['date'], format='%d.%m.%Y %H:%M', errors='coerce')\n",
447
+ "\n",
448
+ "# Sort the DataFrame by the 'date' column in descending order (most recent first)\n",
449
+ "df = df.sort_values(by='date', ascending=False)\n",
450
+ "\n",
451
+ "# Display the updated DataFrame\n",
452
+ "df"
453
+ ]
454
+ },
455
+ {
456
+ "cell_type": "markdown",
457
+ "metadata": {},
458
+ "source": [
459
+ "## Zusätzliche Features"
460
+ ]
461
+ },
462
+ {
463
+ "cell_type": "markdown",
464
+ "metadata": {},
465
+ "source": [
466
+ "In dieser Zelle wird eine neue Spalte url im DataFrame df erstellt, indem die Basis-URL https://fyyd.de/episode/ mit den Werten der Spalte id verkettet wird. Dadurch wird für jede Episode eine vollständige URL generiert. Anschließend wird der aktualisierte DataFrame angezeigt, um die Änderungen zu überprüfen."
467
+ ]
468
+ },
469
+ {
470
+ "cell_type": "code",
471
+ "execution_count": 10,
472
+ "metadata": {
473
+ "id": "1yIOQdW8kO5w"
474
+ },
475
+ "outputs": [],
476
+ "source": [
477
+ "# prompt: Using dataframe df: formatier die id als url mit folgendem format https://fyyd.de/episode/id\n",
478
+ "\n",
479
+ "# Import necessary libraries (if not already imported)\n",
480
+ "import pandas as pd\n",
481
+ "\n",
482
+ "# Assuming 'df' is your DataFrame\n",
483
+ "\n",
484
+ "# Create the URL column by concatenating the base URL with the 'id' column.\n",
485
+ "df['url'] = 'https://fyyd.de/episode/' + df['id']\n",
486
+ "\n",
487
+ "# Display the updated DataFrame to verify the changes.\n",
488
+ "#print(df.head())"
489
+ ]
490
+ },
491
+ {
492
+ "cell_type": "markdown",
493
+ "metadata": {},
494
+ "source": [
495
+ "In dieser Zelle werden Duplikate aus dem DataFrame df entfernt. Dies geschieht durch die Methode drop_duplicates(), die alle Zeilen entfernt, die in allen Spalten identisch sind. Anschließend wird der aktualisierte DataFrame angezeigt."
496
+ ]
497
+ },
498
+ {
499
+ "cell_type": "code",
500
+ "execution_count": null,
501
+ "metadata": {
502
+ "colab": {
503
+ "base_uri": "https://localhost:8080/",
504
+ "height": 1000
505
+ },
506
+ "id": "AFZbleQElO82",
507
+ "outputId": "e4b481c0-b85d-4993-cb0f-d0514a17d085"
508
+ },
509
+ "outputs": [],
510
+ "source": [
511
+ "# prompt: entferne duplikate von df\n",
512
+ "\n",
513
+ "# Assuming 'df' is your DataFrame\n",
514
+ "\n",
515
+ "# Remove duplicates based on all columns\n",
516
+ "df = df.drop_duplicates()\n",
517
+ "\n",
518
+ "# Display the updated DataFrame\n",
519
+ "df"
520
+ ]
521
+ },
522
+ {
523
+ "cell_type": "markdown",
524
+ "metadata": {},
525
+ "source": [
526
+ "## Export als Markdown Tabelle"
527
+ ]
528
+ },
529
+ {
530
+ "cell_type": "markdown",
531
+ "metadata": {},
532
+ "source": [
533
+ "In dieser Zelle wird der DataFrame df neu indexiert und eine neue Spalte index hinzugefügt, die bei 1 beginnt. Die Spalte date wird so formatiert, dass nur das Datum ohne die Uhrzeit angezeigt wird. Anschließend wird eine Markdown-formatierte Tabelle erstellt, in der die Spalte title als Markdown-Link formatiert ist (title). Die resultierende Tabelle enthält die Spalten index, title und date. Schließlich wird die Markdown-Tabelle angezeigt und kann optional in eine Datei gespeichert werden."
534
+ ]
535
+ },
536
+ {
537
+ "cell_type": "code",
538
+ "execution_count": null,
539
+ "metadata": {
540
+ "colab": {
541
+ "base_uri": "https://localhost:8080/",
542
+ "height": 174
543
+ },
544
+ "id": "99rp49RBkdrW",
545
+ "outputId": "d709155c-3b45-4ecb-a0e6-857beed4f5b5"
546
+ },
547
+ "outputs": [],
548
+ "source": [
549
+ "# prompt: reset the index and show as markdown formatted table mit title als markdown link [title](url) und date ohne uhrzeit, die url muss nicht als gesonderte spalte aufgeführt werden, füge einen index hinzu, die tabelle soll am ende die spalten index titel datum besitzen\n",
550
+ "\n",
551
+ "# Assuming 'df' is your DataFrame from the previous code\n",
552
+ "\n",
553
+ "# Reset the index and create a new 'index' column\n",
554
+ "df = df.reset_index(drop=True)\n",
555
+ "df.index = df.index + 1 # Start index from 1\n",
556
+ "df = df.rename_axis('index')\n",
557
+ "\n",
558
+ "\n",
559
+ "# Format the 'date' column to only show the date without the time\n",
560
+ "df['date'] = df['date'].dt.strftime('%d.%m.%Y')\n",
561
+ "\n",
562
+ "# Create the Markdown-formatted table\n",
563
+ "markdown_table = \"| index | title | date |\\n\"\n",
564
+ "markdown_table += \"|---|---|---|\\n\" # Separator row\n",
565
+ "\n",
566
+ "for index, row in df.iterrows():\n",
567
+ " title_link = f\"[{row['title']}]({row['url']})\"\n",
568
+ " markdown_table += f\"| {index} | {title_link} | {row['date']} |\\n\"\n",
569
+ "\n",
570
+ "# Display the markdown table\n",
571
+ "markdown_table\n",
572
+ "\n",
573
+ "# You can also save the markdown table to a file if you want:\n",
574
+ "# with open(\"output.md\", \"w\") as f:\n",
575
+ "# f.write(markdown_table)"
576
+ ]
577
+ },
578
+ {
579
+ "cell_type": "markdown",
580
+ "metadata": {},
581
+ "source": [
582
+ "## Fazit\n",
583
+ "\n",
584
+ "Dieses Notebook zeigt, wie man Podcast-Episoden von Webseiten herunterlädt, die Daten bereinigt und in ein einheitliches Format bringt, um sie schließlich in einer Markdown-Tabelle darzustellen. Es bietet eine umfassende Anleitung zur Datenextraktion, -verarbeitung und -formatierung mit Python. Der Nutzen dieses Notebooks liegt in der Automatisierung und Vereinfachung des Prozesses, um strukturierte Daten aus unstrukturierten Webinhalten zu gewinnen und übersichtlich darzustellen."
585
+ ]
586
+ }
587
+ ],
588
+ "metadata": {
589
+ "colab": {
590
+ "provenance": []
591
+ },
592
+ "kernelspec": {
593
+ "display_name": "Python 3",
594
+ "name": "python3"
595
+ },
596
+ "language_info": {
597
+ "name": "python"
598
+ }
599
+ },
600
+ "nbformat": 4,
601
+ "nbformat_minor": 0
602
+ }
src/_quarto.yml CHANGED
@@ -101,6 +101,10 @@ website:
101
  text: "Jobbörse💼"
102
  - href: 04_use_case/forum/buergergeld_forum.ipynb
103
  text: "Buergergeld Forum💬"
 
 
 
 
104
 
105
  format:
106
  html:
 
101
  text: "Jobbörse💼"
102
  - href: 04_use_case/forum/buergergeld_forum.ipynb
103
  text: "Buergergeld Forum💬"
104
+ - section: "Anwendungsfall Bonus"
105
+ contents:
106
+ - href: 04_use_case_bonus/podcasts/aggregate_podcast_episodes_to_markdown.ipynb
107
+ text: "Podcasts aggregieren"
108
 
109
  format:
110
  html:
src/index.qmd CHANGED
@@ -3,9 +3,9 @@ Herzlich willkommen zum Webscraping Workshop! Egal, ob Erste-Schritte oder Fortg
3
 
4
  ## Reflektion 💭
5
 
6
- * Hast du Programmierkenntnisse in Python?
7
  * Hast du schon einmal Daten aus dem Internet extrahiert?
8
  * Hast du schonmal Daten über eine API bezogen?
 
9
 
10
  ## Navigation auf der Workshop Webseite 🧭
11
 
@@ -29,6 +29,10 @@ Oben links befindet sich die Suchfunktion. Hier kann man nach spezifischen Theme
29
 
30
  Am unteren Bildschirmrand befinden sich die Vor- und Zurück-Knöpfe. Diese ermöglichen eine einfache Navigation zwischen den verschiedenen Seiten in Reihenfolge.
31
 
 
 
 
 
32
  ---
33
 
34
  Viel Erfolg und willkommen zum Workshop! 🎉
 
3
 
4
  ## Reflektion 💭
5
 
 
6
  * Hast du schon einmal Daten aus dem Internet extrahiert?
7
  * Hast du schonmal Daten über eine API bezogen?
8
+ * Nutzt du Große Sprachmodelle im Alltag?
9
 
10
  ## Navigation auf der Workshop Webseite 🧭
11
 
 
29
 
30
  Am unteren Bildschirmrand befinden sich die Vor- und Zurück-Knöpfe. Diese ermöglichen eine einfache Navigation zwischen den verschiedenen Seiten in Reihenfolge.
31
 
32
+ ## Workshop Ressourcen
33
+
34
+ Die Workshop [Quarto Website](https://quarto.org/docs/websites/) findet ihr unter [datenwerkzeuge-cdl-webscraping-workshop-2025.hf.space](https://datenwerkzeuge-cdl-webscraping-workshop-2025.hf.space/). Die No-Code Anwendungen sind im [HuggingFace Classroom](https://huggingface.co/classrooms) auf [huggingface.co/datenwerkzeuge](https://huggingface.co/datenwerkzeuge) bereitgestellt.
35
+
36
  ---
37
 
38
  Viel Erfolg und willkommen zum Workshop! 🎉
src/use_case.qmd CHANGED
@@ -3,7 +3,17 @@ listing:
3
  - id: use_case
4
  contents: "04_use_case"
5
  type: grid
 
 
 
6
  ---
7
 
 
 
 
 
 
 
 
8
  ::: {#use_case}
9
  :::
 
3
  - id: use_case
4
  contents: "04_use_case"
5
  type: grid
6
+ - id: bonus
7
+ contents: "04_use_case_bonus"
8
+ type: grid
9
  ---
10
 
11
+ ### Tutorials
12
+
13
+ ::: {#use_case}
14
+ :::
15
+
16
+ ### Bonus
17
+
18
  ::: {#use_case}
19
  :::