HTMLパーサーを使用して、Webサイトからデータをスクラップし、そうしている間にhtmlコーディングを削除しています。Beautiful Soup などのさまざまなモジュールを認識していますが、「外部」モジュールに依存しない道を進むことにしました。Eloff によって提供されたコード コードがあります: Python で文字列から HTML を削除します。
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)
行の 3 番目の引数が何になるかわかりませself
んstrict=True
。研究は啓蒙を投げかけませんでした。