Czytałem wiele q & o tym, jak usunąć cały kod html z ciągu za pomocą python, ale żaden nie był satysfakcjonujący. Potrzebuję sposobu na usunięcie wszystkich tagów, zachowanie/przekonwertowanie elementów html i działa dobrze z ciągami utf-8.Bezpiecznie usuń cały kod z łańcucha w pytonie
Widocznie BeautifulSoup jest podatny na niektórych specjalnie spreparowanych ciągów HTML, zbudowałem prosty parser z HTMLParser dostać tylko teksty, ale traciłem podmiotów
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)
daje mi coś takiego
[u'Asia, sp ', u'cialiste du voyage', ...
utrata istoty dla akcentowanego "e" w spécialiste.
Korzystanie z jednego z wielu wyrażeń regularnych, które można znaleźć jako odpowiedzi na podobne pytania, zawsze będzie miało kilka przypadków skrajnych, które nie zostały uwzględnione.
Czy istnieje naprawdę dobry moduł, którego mógłbym użyć?
bleach.clean (' jest niedozwolone', pas = True) To może być dokładnie to, co trzeba, zrobię kilka testów z UTF-8, i że podmioty html rzeczy dziś wieczorem, a następnie dajcie znać, dzięki –
Bleach nie może przekształcić encji HTML w ich prawdziwy odpowiednik UTF-8. Jeśli nie, wypróbuj to pytanie: http://stackoverflow.com/questions/57708/convert-xml-html-entities-into-unicode-string-in-python –