我一直在使用 HTML 解析器从网站中抓取数据并剥离 html 编码。我知道各种模块,例如 Beautiful Soup,但决定走不依赖“外部”模块的道路。 Eloff 提供了一个代码:在 Python 中从字符串中去除 HTML https://stackoverflow.com/a/925630/3416774
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.1。然而,我最近升级到 Python 3.2.x,发现我遇到了有关上面编写的 HTML 解析器代码的错误。
我的第一个错误指向这一行:
s.feed(html)
...错误说...
AttributeError: 'MLStripper' object has no attribute 'strict'
因此,经过一番研究后,我将“strict=True”添加到顶行,使其......
class MLStripper(HTMLParser, strict=True)
但是,我收到新的错误:
TypeError: type() takes 1 or 3 arguments
为了看看会发生什么,我删除了“self”参数并保留了“strict=True”...这放弃了错误:
NameError: global name 'self' is not defined
……我有一种“我在猜测”的感觉。
我不知道第三个参数是什么class MLStripper(HTMLParser)
线将是,之后self
and strict=True
;研究并没有带来任何启示。