from mechanize import Browser
br = Browser()
br.open('http://somewebpage')
html = br.response().readlines()
for line in html:
print line
当在HTML文件中打印一行时,我试图找到一种方法,只显示每个HTML元素的内容,而不是格式本身。如果它发现'<a href="等等。例如">some text</a>',它只会打印'some text', '<b>hello</b>'打印'hello',等等。该怎么做呢?
对于一个项目,我需要这样剥离HTML,但也css和js。因此,我对eloff的回答做了一个变化:
class MLStripper(HTMLParser):
def __init__(self):
self.reset()
self.strict = False
self.convert_charrefs= True
self.fed = []
self.css = False
def handle_starttag(self, tag, attrs):
if tag == "style" or tag=="script":
self.css = True
def handle_endtag(self, tag):
if tag=="style" or tag=="script":
self.css=False
def handle_data(self, d):
if not self.css:
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.1中使用了Eloff的答案[非常感谢!]。
我升级到Python 3.2.3,并遇到了错误。
解决方案,这里提供感谢响应器Thomas K,是插入super().__init__()到以下代码:
def __init__(self):
self.reset()
self.fed = []
... 为了让它看起来像这样:
def __init__(self):
super().__init__()
self.reset()
self.fed = []
... 它适用于Python 3.2.3。
再次感谢Thomas K的修复和Eloff提供的原始代码!