Ottenere caratteri internazionali da una pagina web?[duplicare]
Domanda
Questa domanda ha già una risposta qui:
Voglio ricavare alcune informazioni da una pagina web di calcio utilizzando semplici espressioni regolari di Python.Il problema è che giocatori come il primo, ÄÄRITALO, escono come ÄÄRITALO!
Cioè, html utilizza markup con escape per i caratteri speciali, come Ä
Esiste un modo semplice per leggere l'HTML nella stringa Python corretta?Se fosse XML/XHTML sarebbe facile, il parser lo farebbe.
Soluzione
io raccomanderei Bella zuppa per lo scraping HTML.Devi anche dirgli di convertire le entità HTML nei corrispondenti caratteri Unicode, in questo modo:
>>> from BeautifulSoup import BeautifulSoup
>>> html = "<html>ÄÄRITALO!</html>"
>>> soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
>>> print soup.contents[0].string
ÄÄRITALO!
(Sarebbe bello se lo standard codec Il modulo includeva un codec per questo, in modo tale che potresti farlo "some_string".decode('html_entities')
ma purtroppo non è così!)
MODIFICARE:Un'altra soluzione:Lo sviluppatore Python Fredrik Lundh (autore di elementtree, tra le altre cose) ha una funzione per sbloccare le entità HTML sul suo sito web, che funziona con entità decimali, esadecimali e con nome (BeautifulSoup non funzionerà con quelle esadecimali).
Altri suggerimenti
Prova a utilizzare Bella zuppa.Dovrebbe fare il trucco e darti anche un DOM ben formattato con cui lavorare.
Questo blog sembra che l'ingresso abbia avuto un certo successo.
Non l'ho provato personalmente, ma tu ci hai provato
http://zesty.ca/python/scrape.html ?
Sembra avere un metodo htmldecode(text) che farebbe quello che vuoi.