Seite 1 von 1

urllib + encoding

Verfasst: Freitag 7. Dezember 2012, 14:39
von da.dom
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

Re: urllib + encoding

Verfasst: Freitag 7. Dezember 2012, 14:45
von 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.

Re: urllib + encoding

Verfasst: Freitag 7. Dezember 2012, 18:15
von da.dom
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

Re: urllib + encoding

Verfasst: Freitag 7. Dezember 2012, 19:18
von lunar
@da.dom Eine HTML-Bibliothek nutzen. Wahlweise lxml.html, html5lib oder was Dir sonst noch so gefällt.

Re: urllib + encoding

Verfasst: Samstag 8. Dezember 2012, 11:11
von da.dom
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

Re: urllib + encoding

Verfasst: Samstag 8. Dezember 2012, 11:36
von EyDu
Das solltest du dir am besten für den jetziges Script ansehen. Mit einem eigenen Ansatz wirst du mit Sicherheit nicht glücklich.