我一直在使用HTML Parser从网站上删除数据并剥离html编码。我知道各种模块,比如美丽的汤,但是决定走上不依赖于“外部”模块的道路。有一个由Eloff提供的代码:Strip HTML from strings in Python在Python 3.2中使用HTMLParser
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'
因此,一些研究之后,我添加了“严=真“来顶线,使得它...
class MLStripper(HTMLParser, strict=True)
不过,我得到的新的错误:
TypeError: type() takes 1 or 3 arguments
,看看会发生什么,我删除了“自我”的说法,并在“严=真” ......这给了错误左:
NameError: global name 'self' is not defined
...和我“我猜猜猜”的感觉。
我不知道class MLStripper(HTMLParser)
行中的第三个参数是self
和strict=True
之后的第三个参数;研究并没有抛弃任何启示。
非常完美,Thomas K.非常感谢!插入的是“super().__ init __()”代码,脚本再次正常工作。 – MilesNielsen
这也解决了 AttributeError:'HTMLTagRemover'对象没有属性'convert_charrefs' super().__ init __()在Python2中对我来说不是必需的,但是在Python3中 - 谢谢 –