Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Nicht-Ascii-Zeichen werden standardmäßig escaped; das ist, was du dort sieht. Daran musst du eigentlich auch nichts ändern. Siehe dazu auch den Parameter 'ensure_ascii': https://docs.python.org/3/library/json.html#json.dump
Ansonsten frage ich mich, weshalb du HTML als JSON serialisierst. Das ergibt meiner Meinung nach so wenig Sinn.
Wie kommst Du drauf, dass das Encoding `utf-8` wäre? Der Server liefert kein Encoding, so dass man in den HTML-Code schauen muß. Im meta-Tag steht dann auch, welches das richtige Encoding ist.
Das macht man aber nicht selbst, sondern läßt die Bytes am besten mit einem HTML-Parser parsen, z.B. BeautifulSoup. Das ermittelt dann das richtige Encoding automatisch.
Was willst Du denn erreichen? Wie schon geschrieben, macht JSON hier so keinen Sinn. Du brauchst also einen HTML-Parser. Und der kann mit dem Encoding umgehen.
@vertretung: Noch mal die Frage: *Warum* möchtest Du HTML als JSON speichern? Und dann noch nicht einmal in irgendeiner Struktur (und mit anderen Werten) verpackt, sondern einfach als JSON-Zeichenkette‽ Das macht absolut keinen Sinn.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
vertretung hat geschrieben: Dienstag 1. Oktober 2019, 15:29
Weil ich die Daten mit einem anderen Programm benötige, und ja mit der Struktur arbeite ich noch
Evtl. würde es sich auch empfehlen, direkt in Python mit BeautifulSoup das HTML auszuwerten?
@vertretung: Und das andere Programm erwartet eine einzelne JSON-Zeichenkette mit HTML drin als Wert? Das macht wie gesagt keinen Sinn. Was ist das denn für ein Programm?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
HTML ist ein für sich stehendes Format, das so schon weiter verarbeitet werden kann. Dafür brauchst du kein JSON. Wenn ich raten sollte, würde ich denken, dass die eigentliche Aufgabe ist, Informationen aus der Seite zu extrahieren, in einer Datenstruktur abzulegen und diese dann als JSON zu serialisieren. Die eigentliche Serialisierung nach JSON ist dabei aber eigentlich ein eher trivialer Aspekt, der zum Schluss kommt. Deine Frage hier, wie man HTML in JSON ablegt, ist daher für diese Fragestellung auch eher ablenkend.
Das ganze brauch ich für ein Programm, welches selber nicht diese Abfrage machen soll. Der Inhalt des HTML soll genutzt werden, dass hab ich auch schon fertig. Mein Problem ist nur, das mit der Kodierung. Also will ich die JSON als Schnittstelle benutzen. Habt ihr da eine bessere Idee?
vertretung hat geschrieben: Dienstag 1. Oktober 2019, 17:51
Habt ihr da eine bessere Idee?
Curl oder wget benutzen JSON hier als "Encoding-Hilfe" zu missbrauchen, ist jedenfalls nicht angemessen. Öffne einfach eine Datei (üblicherweise mit der Endung '.html') im binären Schreibmodus und schreib '.content' dort hinein. Resultat:
Wenn Du schon ein Programm hast, das das HTML richtig parst, warum kann das dann nicht mit dem Encoding umgehen? Das hört sich alles danach an, als ob Du an anderer Stelle einen Fehler hast, und den jetzt durch komplizierte Umgehungslösungen versuchst zu vertuschen.