私はHTML Parserを使用して、Webサイトからのデータを廃止し、HTMLコードを削除しています。私は美しいスープのような様々なモジュールを知っていますが、 "外側"のモジュールに依存しない道を選ぶことに決めました。 Eloffから供給されたコードのコードがあります:Strip HTML from strings in PythonPython 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 Parserコードに関するエラーが発生することを発見しました。ラインへ
私の最初のエラーポイント:
s.feed(html)
...とエラーが言う...だから
AttributeError: 'MLStripper' object has no attribute 'strict'
は、研究のビットの後、私は厳しい= true」を追加します
:「class MLStripper(HTMLParser, strict=True)
...それを作る、一番上の行にしかし、私は新たなエラーが発生します
TypeError: type() takes 1 or 3 arguments
どうなるか見て、私は「自己」の引数を削除し、「=厳格な真」に残って...エラーをあきらめた:
NameError: global name 'self' is not defined
を...と私が得ました「私は推測で推測している」という感じです。
とstrict=True
の後に、class MLStripper(HTMLParser)
行の3番目の引数が何であるかわかりません。研究はどんな啓蒙も投げなかった。
これは完璧に機能しました。Thomas K.ありがとうございました!スクリプトは、 "super().__ init __()"コードが挿入された状態で完全に動作しています。 – MilesNielsen
AttributeError: 'HTMLTagRemover'オブジェクトに 'convert_charrefs'属性がありません super().__ init __()はPython2では必須ではありませんでしたが、Python3にあった –