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.

È stato utile?

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>&#196;&#196;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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top