为什么发生这种情况,我将使用模块HTMLParser

时间:2018-10-26 08:33:25

标签: python

Link.finder.py具有:

import HTMLParser
from urlparse import urlparse

class LInkFinder(HTMLParser):

    def __init__(self):
        super.__init__()

    def handle_starttag(self, tag, attrs):
        print(tag)

    def error(self, message):
        pass


finder = LInkFinder()
finder.feed('<html><head><title>Test</title></head>'
            '<body><h1>Parse me!</h1></body></html>')

我收到此错误:

Traceback (most recent call last):
  File "/Users/sijier/PycharmProjects/day1/link_finder.py", line 4, in <module>
    class LInkFinder(HTMLParser):
TypeError: Error when calling the metaclass bases
    module.__init__() takes at most 2 arguments (3 given)

我应该在pyhon 2.7版中使用 init 吗? 这是什么问题?又为什么呢?   有帮助吗?

1 个答案:

答案 0 :(得分:0)

此代码存在几个问题。最初的情况是您尝试对HTMLParser 模块进行子类化,而不是该模块所包含的 class 。您应该这样做:

from HTMLParser import HTMLParser

解决此问题后,您将在__init__方法中发现问题;您不能只引用super而不调用它,在Python 2中,您需要在其中传递当前类和self实例。但是实际上,仅定义一种方法来调用超类版本是没有意义的。您应该完全删除该__init__定义。