Gutefrage API?
Hallo! Gibt es eine Gutefrage-API für Python?
Bitte mit GitHub links o.Ä antworten
3 Stimmen
2 Antworten
Vielleicht mit so einer inoffiziellen API:
Aber ich kenne keine andere Api, welche Offiziell ist und "fast" alle Funktionen hat
Ich hab heute für ein Proof of konzept für datenverarbeitung mir die seite hier angeschaut und es war vergleichsweiße schwer. Selbst github war einfacher. Ich hab vor dann n wissenschaftliches paper zu veröffentlichen :D Mein aller erstes
Ok,
Es gibt api's für GuteFrage. Ich habe ein "deepdive" in den Seitenaufbau gemacht, und die Folgende API wird von GuteFrage im Browser verwendet.
Ich habe nur die read only api angeschaut, aber es mus auch eine zum posten geben.
Erstmal brauch man einen API key. Der ist einfach zu bekommen, und steht wie bei vielen anderen Seiten auch in einem Java Script file. Wenn du auf der Datei bist ist das sicher überwältigend. Suche mithilfe von strg+f nach: 0;var t="
Dann koppiere den Key in einen string.
api_key = "<API key>"
Der Endpoint ist:
url = "https://www.gutefrage.net/graphql"
Dein request header sollte so aussehen:
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36",
"Connection": "keep-alive",
"Origin": "https://www.gutefrage.net",
"x-api-key": api_key
}
Das keep alive kann weg gelassen werden, solang nur ein request gesendet wird. Es verschnellert aber generell die request bei mererern.
Die Origin ist wichtig, da sonst ein 403 status code kommt.
Der Request muss ein post request sein:
r = requests.post(url=url, json=data)
in "data" variable kommt der querry rein.
data = {
"query": query,
"variables": {
"nickname": username
}
}
Die query variable ist ein langer graphql querry. Hier findet sich ein beispiel mit dem man nutzerdaten bekommen kann: https://pastebin.com/Kex2mDV1
Dies ist aber nur ein Beispiel man kann auch andere Daten als nutzerdaten bekommen. Dafür schaut euch qraph ql querys an.
Ich hoffe ich konnte helfen und einigen richtig viel arbeit ersparen
Ich habe den link zum Java Script file vergessen. Hier is er: https://www.gutefrage.net/nmms-assets/js/bundle-other-e76da2918f85040e8c52.min.js
kann es sein dass der link nicht mehr aktuell ist? es leitet mich auf die 404 seite weiter
bei mir ist es https://www.gutefrage.net/nmms-assets/js/bundle-other-1723be43443980f3cc8e.min.js
kann es sein dass das individuell für jeden nutzer ist?
Diese API ist aber inoffiziell und hat ein sehr beschränkten funktionsumfang.