urllib + encoding

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.
Antworten
da.dom
User
Beiträge: 114
Registriert: Dienstag 10. Juni 2008, 14:42

Hallo Zusammen,

verzweifel mal wieder an den bösen Encodings.
Ziel: von zwei unterschiedlichen Web Ressourcen ziehe ich Texte, diese will ich miteinander vergleichen.

Code: Alles auswählen

# -*- coding: utf-8 -*-
.....
html=response.read()
imdbTitle=findNamesInHtml(html)
imdbTitle=imdbTitle[0].decode("utf8")
....
html=response.read()
listE=findNamesInHtml(html)
name=listE[0].decode("utf8")
....
#Vergleich der beiden
if name.strip().upper().startswith(imdbTitle.strip().upper()):
   ......
Ergebnis:
* * Found Movie: Der Herr der Ringe - Die Gefährten seems not be correct for: Der Herr der Ringe - Die Gefährten

Wie bekomme ich denn hier die bösen Umlaut in gleicher Art und Weise kodiert?

Danke schon mal
Dom
BlackJack

@da.dom: Ich würde bei 'ä' nicht von Textcodierung sprechen. Das sind Character-Entitäten in HTML. Und hier ahne ich mal das ``findNamesInHtml(html)`` nicht auf eine vernünftige Bibliothek zur Verarbeitung von HTML setzt, denn die sollte diese Entitäten eigentlich durch die entsprechenden Zeichen ersetzen. Und vor allem auch Unicode liefern und nicht UTF-8 kodierte Byteketten.
da.dom
User
Beiträge: 114
Registriert: Dienstag 10. Juni 2008, 14:42

HiHi..

da gehst du recht in der Annahme.
Das ist eines meiner Quick&Dirty Scripte, nutze urllib2 + regex um die Webseite aus zu lesen.

Was wäre denn eine alternative? (zumindest um die Problematik der Umlaute / Encodings / HTML Escapes los zu werden?)

Viele Grüße
Dom
lunar

@da.dom Eine HTML-Bibliothek nutzen. Wahlweise lxml.html, html5lib oder was Dir sonst noch so gefällt.
da.dom
User
Beiträge: 114
Registriert: Dienstag 10. Juni 2008, 14:42

Na das werde ich mir doch mal für mein nächstes Script ansehen.
Für mein aktuelles Programm hatte ich eigentlich so was eingebaut:

Code: Alles auswählen

import HTMLParser
imdbTitle=HTMLParser.HTMLParser().unescape(imdbTitle[0])
Unerklärlicher weise funktioniert das ganz bei mir lokal (Windows, Python 2.6.5)
und auf dem Ziel System findet keine "Übersetzung" der HTML Sequenzen statt (Debian 5, Python 2.5.2)

Dazu auch jemand eine gute idee?

Viele Grüße
Dom
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das solltest du dir am besten für den jetziges Script ansehen. Mit einem eigenen Ansatz wirst du mit Sicherheit nicht glücklich.
Das Leben ist wie ein Tennisball.
Antworten