我一直在使用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中 - 謝謝 –