ホームページ > バックエンド開発 > Python チュートリアル > 正規表現の落とし穴を回避しながら、Python で HTML ファイルからクリーン テキストを抽出するにはどうすればよいですか?

正規表現の落とし穴を回避しながら、Python で HTML ファイルからクリーン テキストを抽出するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-28 19:53:14
オリジナル
740 人が閲覧しました

How Can I Extract Clean Text from HTML Files in Python While Avoiding the Pitfalls of Regular Expressions?

Python を使用して HTML ファイルからクリーン テキストを抽出する

Python を使用して HTML ファイルからテキストを抽出しようとする場合は、堅牢性と精度を考慮することが重要です。多くの場合、正規表現で機能しますが、HTML の形式が不十分な場合は苦労する可能性があります。

より堅牢なソリューションには、Beautiful Soup のようなライブラリが一般的に推奨されます。ただし、ユーザーは、JavaScript ソースなどの不要なテキストや、HTML エンティティの誤った解釈などの問題に遭遇する可能性があります。

これらの問題に対処するには、より包括的なアプローチが必要です。

html2text:有望な解決策

有望な解決策の 1 つは html2text です。このライブラリは HTML エンティティを正しく処理し、JavaScript を無視します。ただし、プレーン テキストではなく Markdown が生成されるため、変換するには追加の処理が必要です。

BeautifulSoup とカスタム コードの活用

別のアプローチは、BeautifulSoup と組み合わせて使用​​することです。カスタムコード。不要な要素 (スクリプトやスタイルなど) を削除し、get_text() メソッドを利用することで、正規表現のみに依存せずにクリーンなテキスト表現を取得できます。

このアプローチを示す Python コード スニペットを次に示します。

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 script and style elements
for script in soup(["script", "style"]):
    script.extract()

# Extract text
text = soup.get_text()

# Additional processing to remove unwanted whitespace and split headlines into separate lines
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)
ログイン後にコピー

このアプローチを使用すると、正規表現やライブラリがすべてを処理できないという欠点がなく、HTML ファイルからきれいで人間が判読できるテキストを抽出できます。シナリオを効果的に実行します。

以上が正規表現の落とし穴を回避しながら、Python で HTML ファイルからクリーン テキストを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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