from lxml.html.clean import clean_html, Cleaner
def clean(text):
try:
cleaner = Cleaner(scripts=True, embedded=True, meta=True, page_structure=True, links=True, style=True,
remove_tags = ['a', 'li', 'td'])
print (len(cleaner.clean_html(text))- len(text))
return cleaner.clean_html(text)
except:
print 'Error in clean_html'
print sys.exc_info()
return text
Ułożyłem powyższy (brzydki) kod jako moje początkowe wypady w ziemię pytona. Próbuję użyć LXML-a do oczyszczenia kilku stron HTML, więc na końcu pozostało mi tylko tekst i nic więcej - ale spróbuj tak jak ja, powyższe nie wydaje się działać jako takie, jestem pozostało z substial ilości znaczników (i robi to wydaje się być złamane html), a zwłaszcza powiązań, które nie trafiają usunięte, mimo args używam w remove_tags
i links=True
python [lxml] - oczyszczanie znaczników html
jakiś pomysł, co się dzieje, może im szczekanie złe drzewo z lxml? Myślałem, że to jest sposób, aby przejść z parsowania html w Pythona?
nie jestem w stanie powtórzyć ten problem przy użyciu http : //stackoverflow.com/questions/2950131/python-lxml-cleaning-out-html-tags/2950223#2950223 jako dane wejściowe. Czy możesz podać próbkę html i pożądaną wydajność? – unutbu
~ unutbu to jest najdziwniejsze - mam całą bazę danych, w której ten kod nie działa - a mimo to wygląda na to, że działa dobrze teraz? (zrobiłeś coś :)?) ale chociaż jestem na niego, każdy pomysł, w jaki sposób można również wziąć link-tekst, podczas usuwania linku (ponieważ atm pozostawia tekst linków w). –
@sadhu_: 'remove_tags' usuwa same tylko tagi; pozostawia swoje dzieci i tekst. Użyj 'kill_tags', aby usunąć całe drzewo. – jfs