ホームページ  >  記事  >  バックエンド開発  >  BeautifulSoupを使用して表示されているWebページのテキストを抽出する方法?

BeautifulSoupを使用して表示されているWebページのテキストを抽出する方法?

DDD
DDDオリジナル
2024-11-25 18:41:09731ブラウズ

How to Extract Visible Webpage Text Using BeautifulSoup?

BeautifulSoup を使用した Web ページの表示テキストの抽出

多くの Web スクレイピング タスクでは、スクリプトなどの要素を除いて、Web ページの表示テキスト コンテンツを取得する必要があります。コメント、CSS スタイル。 BeautifulSoup を使用すると、適切なアプローチでこれを簡単に実現できます。

findAll() 関数を使用すると、望ましくない要素内に隠されたテキスト ノードを含むすべてのテキスト ノードが取得されるため、一般的な問題が発生します。これに対処するには、特定のタグとコメントを除外するカスタム フィルターを定義できます。

次のコードは、このアプローチの例です。

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))

tag_visible 関数は、テキストの親要素かどうかを確認します。ノードは、望ましくないタグのいずれかに一致するか、ノードがコメントである場合に一致します。このフィルターを通過したノードは、u" ".join(t.strip() for t invisible_texts) を使用して、表示されているテキストを単一の文字列に結合するために使用されます。

このアプローチでは、表示されているテキストのみを効果的に抽出します。スクリプトやコメントなどの不要な要素を省いた Web ページ。

以上がBeautifulSoupを使用して表示されているWebページのテキストを抽出する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。