Pythonで文字列からHTMLを取り除く 質問する

Pythonで文字列からHTMLを取り除く 質問する
from mechanize import Browser
br = Browser()
br.open('http://somewebpage')
html = br.response().readlines()
for line in html:
  print line

HTML ファイルの行を印刷するときに、各 HTML 要素の内容のみを表示し、書式自体は表示しないようにする方法を探しています。 が見つかった場合は'<a href="whatever.example">some text</a>'、「some text」のみが印刷され、'<b>hello</b>'「hello」などが印刷されます。これをどのように実行すればよいでしょうか。

ベストアンサー1

私はいつもこの関数を使って HTML タグを削除していました。これは Python stdlib のみを必要とするためです。

Python 3の場合:

from io import StringIO
from html.parser import HTMLParser

class MLStripper(HTMLParser):
    def __init__(self):
        super().__init__()
        self.reset()
        self.strict = False
        self.convert_charrefs= True
        self.text = StringIO()
    def handle_data(self, d):
        self.text.write(d)
    def get_data(self):
        return self.text.getvalue()

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

Python 2の場合:

from HTMLParser import HTMLParser
from StringIO import StringIO

class MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.text = StringIO()
    def handle_data(self, d):
        self.text.write(d)
    def get_data(self):
        return self.text.getvalue()

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

おすすめ記事