1. ホーム
  2. python

[解決済み] BeautifulSoup 可視化されたウェブページのテキストを取得する

2022-05-13 04:26:24

質問

基本的にBeautifulSoupで 可視テキスト を取得したい。例えば このウェブページ は私のテストケースです。そして、私は主に本文(記事)と、おそらくいくつかのタブ名を取得したいです。私はこの中の提案を試してみました SO質問 の多くを返す <script> タグと私が望まないhtmlコメントがたくさん返されます。関数に必要な引数がわかりません。 findAll() に必要な引数がわかりません。

では、スクリプト、コメント、CSSなどを除いたすべての可視テキストを見つけるにはどうすればよいのでしょうか?

どのように解決するのですか?

これを試してみてください。

from bs4 import BeautifulSoup
from bs4.element import Comment
import urllib.request


def tag_visible(element):
    if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:
        return False
    if isinstance(element, Comment):
        return False
    return True


def text_from_html(body):
    soup = BeautifulSoup(body, 'html.parser')
    texts = soup.findAll(text=True)
    visible_texts = filter(tag_visible, texts)  
    return u" ".join(t.strip() for t in visible_texts)

html = urllib.request.urlopen('http://www.nytimes.com/2009/12/21/us/21storm.html').read()
print(text_from_html(html))