LoginSignup
1
0

More than 3 years have passed since last update.

python3.7でHTMLからタグをstripする

Posted at

結論

BeautifulSoupの .get_text() を使う。

サンプルプルコード

import requests
from bs4 import BeautifulSoup

target_url = 'https://example.com'
r = requests.get(target_url)

soup = BeautifulSoup(r.text, 'html5lib')

result = soup.find("h1").get_text()

print(result)

メモ

HTMLからタグを削除しようとして検索したがなかなかピンポイントな情報が得られなかったのでメモ。

タグの除却については↓のような古いやり方が結構ひっかかる。

from html.parser import HTMLParser

class MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.strict = False
        self.convert_charrefs= True
        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()
class MLStripper(HTMLParser):

    def __init__(self):
        self.reset()
        # stripしたテキストを保存するバッファー
        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()
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0