ホームページ >バックエンド開発 >Python チュートリアル >Python で HTML からクリーンなテキストを効率的に抽出するにはどうすればよいですか?

Python で HTML からクリーンなテキストを効率的に抽出するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-29 22:58:11620ブラウズ

How Can I Efficiently Extract Clean Text from HTML in Python?

Python を使用した HTML からのテキストの抽出

目的は、Python で HTML ファイルからテキストを抽出し、得られる出力を複製することです。ブラウザからテキストをコピーしてテキストに貼り付けるeditor.

課題

正規表現は、形式が不十分な HTML に対して十分堅牢ではありません。 Beautiful Soup はよく推奨されますが、JavaScript などの不要なコンテンツを拾い上げ、HTML エンティティの解釈に失敗する可能性があります。

有望な代替案: html2text

ただし、HTML2text の代わりにマークダウンが生成されます。プレーンテキストの場合、html2text は HTML エンティティを正しく処理し、JavaScript を無視します。ただし、そのドキュメントと例は限られています。

テキスト抽出のための最適なコード

以下のコードは、不要な要素をフィルターで除外し、HTML を保持する効果的なソリューションを提供します。エンティティ:

from urllib.request import urlopen
from bs4 import BeautifulSoup

url = "http://news.bbc.co.uk/2/hi/health/2284783.stm"
html = urlopen(url).read()
soup = BeautifulSoup(html, features="html.parser")

# Remove scripts and styles
for script in soup(["script", "style"]):
    script.extract()

# Extract text
text = soup.get_text()

# Convert line breaks and remove whitespace
lines = (line.strip() for line in text.splitlines())
chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
text = '\n'.join(chunk for chunk in chunks if chunk)

print(text)

Dependency

このコードを使用するには、BeautifulSoup4 が次のようにインストールされている必要があります:

pip install beautifulsoup4

以上がPython で HTML からクリーンなテキストを効率的に抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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