Ho letto molti q & a su come rimuovere tutto il codice html da una stringa usando python ma nessuno era soddisfacente. Ho bisogno di un modo per rimuovere tutti i tag, preservare/convertire le entità html e lavorare bene con le stringhe utf-8.Rimuovere in modo sicuro tutto il codice html da una stringa in python
Apparentemente BeautifulSoup è vulnerabile ad alcune stringhe html appositamente predisposti, ho costruito un semplice parser con HTMLParser per ottenere solo i testi, ma stavo perdendo le entità
from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.data = []
def handle_data(self, data):
self.data.append(data)
def handle_charref(self, name):
self.data.append(name)
def handle_entityref(self, ent):
self.data.append(ent)
mi dà qualcosa di simile
[u'Asia, sp ', u'cialiste du voyage', ...
perdere l'entità per la "e" accentata in spécialiste.
Utilizzando una delle molte espressioni regolari che è possibile trovare come risposte a domande simili, avrà sempre alcuni casi limite che non sono stati considerati.
C'è qualche modulo davvero utile che potrei usare?
bleach.clean (' non è consentito', striscia = True) questo potrebbe essere esattamente quello che mi serve, farò alcuni test con utf-8, entità HTML e che roba stasera e poi ti faccio sapere, grazie –
Bleach non può trasformare le entità HTML nella loro controparte UTF-8 reale. In caso contrario, prova questa domanda: http://stackoverflow.com/questions/57708/convert-xml-html-entities-into-unicode-string-in-python –