猿问

从Python中的字符串中剥离HTML

从Python中的字符串中剥离HTML

from mechanize import Browserbr = Browser()br.open('http://somewebpage')html = br.response().readlines()for line in html:
  print line

在HTML文件中打印一行时,我试图找到一种方法只显示每个HTML元素的内容,而不是格式本身。如果它发现'<a href="whatever.com">some text</a>',它只会打印“一些文本”,'<b>hello</b>'打印“你好”等等。你会怎么做呢?


蓝山帝景
浏览 874回答 5
5回答

手掌心

我总是使用这个函数来去掉HTML标记,因为它只需要Pythonstdlib:关于Python 2from&nbsp;HTMLParser&nbsp;import&nbsp;HTMLParserclass&nbsp;MLStripper(HTMLParser): &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__init__(self): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.reset() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fed&nbsp;=&nbsp;[] &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;handle_data(self,&nbsp;d): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fed.append(d) &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_data(self): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;''.join(self.fed)def&nbsp;strip_tags(html): &nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;MLStripper() &nbsp;&nbsp;&nbsp;&nbsp;s.feed(html) &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;s.get_data()用于Python 3from&nbsp;html.parser&nbsp;import&nbsp;HTMLParserclass&nbsp;MLStripper(HTMLParser): &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__init__(self): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.reset() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.strict&nbsp;=&nbsp;False &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.convert_charrefs=&nbsp;True &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fed&nbsp;=&nbsp;[] &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;handle_data(self,&nbsp;d): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fed.append(d) &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_data(self): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;''.join(self.fed)def&nbsp;strip_tags(html): &nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;MLStripper() &nbsp;&nbsp;&nbsp;&nbsp;s.feed(html) &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;s.get_data()注*这只适用于3.1。对于3.2或更高版本,您需要调用父类的依尼特功能。看见在Python3.2中使用HTMLParser

动漫人物

我没有想过它会错过多少案例,但是您可以做一个简单的正则表达式:re.sub('<[^<]+?>',&nbsp;'',&nbsp;text)对于那些不理解regex的人,这将搜索一个字符串。<...>,其中的内部内容由一个或多个(+)不是<..这个?意味着它将匹配它能找到的最小字符串。例如,给出<p>Hello</p>,它会匹配的<'p>和</p>分别与?..如果没有它,它将匹配整个字符串。<..Hello..>.如果非标签<出现在html中(例如。2 < 3),它应该写成转义序列&...总之所以^<可能没必要。
随时随地看视频慕课网APP
我要回答