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
我把上面的(丑陋的)代码放在一起,作为我最初进入python领域的代码。我正在尝试使用lxml清理工来清理几个html页面,所以最后我只剩下了文本,而没有其他任何东西 - 但尝试,因为我可能,上述不似乎工作,我是还留下了标记的substial量(和它不似乎被打破HTML),特别的联系,这是没有得到清除,尽管我在remove_tags
使用指定参数和links=True
python [lxml] - 清理html标签
任何想法怎么回事,也许即时通讯与lxml吠叫错误的树?我认为这是在Python中解析HTML的方式吗?
我不能使用复制的问题HTTP ://stackoverflow.com/questions/2950131/python-lxml-cleaning-out-html-tags/2950223#2950223作为输入。你能提供一个html样本和所需的输出吗? – unutbu 2010-06-01 16:45:35
〜unutbu这是最奇怪的 - 我有一个完整的数据库,代码没有工作 - 但是,它现在似乎工作得很好? (你做了什么:)?) 但是,即使在它,任何想法如何也可以采取链接文本了,当删除链接(因为atm它离开链接的文本)。 – 2010-06-01 18:05:53
@sadhu_:'remove_tags'本身只删除标签;它留下了孩子和文字。使用'kill_tags'去除整棵树。 – jfs 2011-10-31 15:44:57