bundesAPI / sofortmassnahmen

Zivilgesellschaftliche Beteiligung zu den „Sofortmaßnahmen Zweites Open Data Gesetz“
96 stars 3 forks source link

Warnungen auf lebensmittelwarnung.de #33

Closed Bendodroid closed 2 years ago

Bendodroid commented 2 years ago

https://www.lebensmittelwarnung.de/bvl-lmw-de/

Ich habe ein wenig an den URLs rumgespielt, konnte aber keine API-Endpunkte finden, aus denen ein schönes JSON rausfällt. Es gibt wohl nur direkt das fertige HTML und die RSS Feeds. Man muss die Meldungen wohl aus einem der beiden rausdoktern.

Könnte aber gut sein, dass ich etwas offensichtliches übersehen habe, jmd. mit mehr Erfahrung beim Behörden-reverse-engineering mag da mehr Erfolg haben.

Soweit ich das bisher erkennen konnte ist die URL für die Website wie folgt aufgebaut:

/bvl-lmw-de/liste/alle/deutschlandweit/100/0
                   |          |         |  |
                   |          |         |  --> Seite 0-...
                   |          |         |  
                   |          |         --> Anzahl Ergebnisse pro Seite
                   |          |
                   |          --> Bundesland
                   |
                   --> Kategorie

Mögliche Werte:

Kategorie: alle, lebensmittel, kosmetische+mittel, bedarfsgegenstaende

Bundesland: deutschlandweit, baden-wuerttemberg, bayern, berlin, brandenburg, bremen, hamburg, hessen, mecklenburgvorpommern, niedersachsen, nordrheinwestfalen, rheinlandpfalz, saarland, sachsen, sachsenanhalt, schleswigholstein, thueringen

LilithWittmann commented 2 years ago

Also es gibt noch die App aus Bayern (Verbraucher Schutz) da könnte man mal reinschauen. Ansonsten könnte man auch einfach den RSS zu JSON machen über API Proxy…

kaiwinter commented 2 years ago

RSS zu JSON machen über API Proxy…

Das müsste man irgendwo selbst hosten, oder? Hast du dafür eine Idee?

Aus der Verbraucher Schutz App wird dieser REST-Endpunkt verwendet: https://megov.bayern.de/verbraucherschutz/baystmuv-verbraucherinfo/rest/api Die Daten stammen dann also nicht direkt von lebensmittelwarnung.de, außerdem wird ein API-Key benötigt.

Beispiel-Antwort ```JSON { "response": { "docs": [ { "_type": ".FoodWarning", "archived": false, "id": 4592, "link": "https://www.lebensmittelwarnung.de/bvl-lmw-de/detail/lebensmittel/69401", "publishedDate": 1629891477000, "title": "Solevita Hanf Tee 0,75 l", "warning": "Es wurde ein erhöhter Gehalt an Tetrahydrocannabinol (THC) festgestellt.", "affectedStates": [ "Baden-Württemberg", "Bayern", "Berlin", "Bremen", "Hamburg", "Hessen", "Mecklenburg-Vorpommern", "Nordrhein-Westfalen", "Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen" ], "product": { "_type": ".FoodWarning$Food", "designation": "
\n Solevita Hanf Tee 0,75 l\n
\n
", "imageUrls": [ "https://www.lebensmittelwarnung.de/bvl-lmw-de/opensaga/attachment/781be82c-94d1-4860-8829-33e751df406e/Pfanner.PNG" ], "manufacturer": "Hermann PF Getränke GmbH Vertrieben über die Fa. Lidl" } } ], "numFound": 4189 } } ```
auchtetraborat commented 2 years ago

Ich hab zum RSS-Feed der Seite nen Scraper gebaut: https://github.com/auchtetraborat/Lebensmittelwarnung-scraper

LilithWittmann commented 2 years ago

@auchtetraborat Oh das ist ziemlich cool! Wäre wirklich nice wenn das ein Modul von deutschland werden könnte! Und bin gerade dran zu schauen, bei welchen fällen man sowas auch tatsächlich einfach selbst als API bereitstellen könnte. Das wäre ein sehr guter case dafür. (Kümmere ich mich gern darum, wenn es ein modul in deutschland ist.

LilithWittmann commented 2 years ago

curl -H 'Host: megov.bayern.de' -H 'Content-Type: application/json' -H 'User-Agent: verbraucherinfo/2 CFNetwork/1240.0.4 Darwin/20.6.0' -H 'Accept: */*' -H 'Accept-Language: en-us' -H 'Authorization: baystmuv-vi-1.0 os=ios, key=9d9e8972-ff15-4943-8fea-117b5a973c61' --data-binary '{
  "food" : {
    "rows" : 500,
    "sort" : "publishedDate desc, title asc"
  },
  "products" : {
    "rows" : 500,
    "sort" : "publishedDate desc, title asc"
  }
}' --compressed 'https://megov.bayern.de/verbraucherschutz/baystmuv-verbraucherinfo/rest/api/warnings/merged'```
auchtetraborat commented 2 years ago

Die Daten aus deinem curl mit "food" sind exakt die gleichen aus dem RSS-Feed, auch in gleicher Reihenfolge im Output.

Die Daten aus dem curl mit "product" sind im Wesentlichen von Datenbank "Gefährliche Produkte in Deutschland", mit ein paar Ausnahmen, wo Hersteller / Märkte mit ihren Rückrufseiten verlinkt sind. Die Datenbank ist aber deutlich größer als die 52 Ergebnisse, die "product" zurückgibt. Da wir scheinbar intern nach dem TS gefiltern, ca ein Monat in die Vergangenheit (1630015200000 - Fri Aug 27 2021 00:00:00 - 1628028000000 - Wed Aug 04 2021 00:00:00)

auchtetraborat commented 2 years ago

Da es nun https://github.com/bundesAPI/lebensmittelwarnung-api/ gibt, für wie sinnvoll haltet ihr eine Integration von dem Scraper in deutschland?

LilithWittmann commented 2 years ago

Ich glaube erledigt 🎉