from mechanize import Browser br = 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>'打印“ hello”,等等。如何去做呢?
'<a href="whatever.com">some text</a>'
'<b>hello</b>'
“ hello”
我一直使用此函数来剥离HTML标记,因为它仅需要Python stdlib:
HTML
Python stdlib:
在Python 2上
from HTMLParser import HTMLParser class MLStripper(HTMLParser): def __init__(self): self.reset() self.fed = [] def handle_data(self, d): self.fed.append(d) def get_data(self): return ''.join(self.fed) def strip_tags(html): s = MLStripper() s.feed(html) return s.get_data()
对于Python 3
from html.parser import HTMLParser class MLStripper(HTMLParser): def __init__(self): self.reset() self.strict = False self.convert_charrefs= True self.fed = [] def handle_data(self, d): self.fed.append(d) def get_data(self): return ''.join(self.fed) def strip_tags(html): s = MLStripper() s.feed(html) return s.get_data()
注意:这仅适用于3.1。对于3.2或更高版本,您需要调用父类的init函数。