Erste internationale Zeichen von einer Webseite aus?[Duplikat]
Frage
Diese Frage hat bereits eine Antwort hier:
- Dekodieren HTML-Entitäten in Python string? 5 Antworten
Ich will zu kratzen einige Informationen aus einer football (soccer) web-Seite mit einfachen python regexp ist.Das problem ist, dass die Spieler wie die erste chap, ÄÄRITALO, kommt als ÄÄRITALO!
Html verwendet entkommen markup für die Sonderzeichen wie Ä
Gibt es eine einfache Möglichkeit, das Lesen der html-Code in die richtige python string?Wenn es XML/XHTML-es würde leicht sein, der parser würde es tun.
Lösung
Ich würde empfehlen BeautifulSoup für HTML-scraping.Sie müssen auch sagen, es zu konvertieren, HTML-Entitäten in das entsprechende Unicode-Zeichen, wie so:
>>> from BeautifulSoup import BeautifulSoup
>>> html = "<html>ÄÄRITALO!</html>"
>>> soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
>>> print soup.contents[0].string
ÄÄRITALO!
(Es wäre schön, wenn die standard - codecs Modul enthalten einen codec für diese, so dass Sie könnte tun "some_string".decode('html_entities')
aber leider ist es nicht!)
EDIT: Eine andere Lösung:Python-Entwickler Fredrik Lundh (Autor von elementtree, unter anderem) eine Funktion unsecape HTML-entities auf seiner website, die arbeitet, mit dezimal -, hex-und named entities (BeautifulSoup wird nicht Arbeit mit die hex ones).
Andere Tipps
Versuchen Sie es mit BeautifulSoup.Es sollte den trick tun und geben Sie eine schön formatierte DOM-mit so gut funktionieren.
Dieser blog Eintrag zu haben scheint, hatte einen gewissen Erfolg mit es.
Ich habe nicht selber ausprobiert, aber haben Sie versucht,
http://zesty.ca/python/scrape.html ?
Es scheint eine Methode htmldecode(text), welche alles tun würde, was Sie wollen.