ホームページ > バックエンド開発 > Python チュートリアル > BeautifulSoupを使用してWebページから可視テキストのみを抽出する方法?

BeautifulSoupを使用してWebページから可視テキストのみを抽出する方法?

Susan Sarandon
リリース: 2024-11-14 18:56:02
オリジナル
185 人が閲覧しました

How to Extract Only Visible Text from Web Pages Using BeautifulSoup?

BeautifulSoup による Web ページ テキストの抽出: 表示テキストのみを抽出

Web スクレイピングでは、Web ページから特定のテキスト コンテンツを取得することがよくあります。広く使用されている HTML 解析ライブラリである BeautifulSoup を使用すると、スクリプト、コメント、CSS などの不要な要素を除外して、Web ページ上の表示テキストのみを抽出するという課題に遭遇することがあります。

表示テキストの識別

特定の HTML 要素に表示テキストが含まれているかどうかを判断するには、tag_visible 関数を使用できます。この関数は、ターゲット要素の親要素が特定の除外タグ セット (スタイル、スクリプト、ヘッドなど) 内にあるかどうか、またはターゲット要素がコメントであるかどうかをチェックします。いずれかの条件が満たされる場合、関数は False を返し、要素が表示可能とみなされないことを示します。

表示テキストの抽出

Web ページから表示テキストを抽出するには、次の手順に従ってください:

  1. HTML から BeautifulSoup オブジェクトを作成します。 body.
  2. findAll(text=True) メソッドを使用して HTML 内のすべてのテキストを検索します。
  3. tag_visible 関数を使用して抽出されたテキストをフィルタリングして、不要な要素を削除します。
  4. 結合表示されているテキスト文字列をまとめて、先頭と末尾の空白を削除します。

例使用法

以下のコードは、これらの手法を使用して Web ページから表示テキストを抽出する方法を示しています。

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))
ログイン後にコピー

このアプローチを利用することで、Web から表示テキストを効率的にスクレイピングできます。ページを削除し、スクリプト、コメント、その他の非表示要素から無関係なコンテンツを除外します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート