Pythonを使用してHTMLファイルからテキストを抽出する 質問する

Pythonを使用してHTMLファイルからテキストを抽出する 質問する

Python を使用して HTML ファイルからテキストを抽出したいと思います。ブラウザからテキストをコピーしてメモ帳に貼り付けた場合と基本的に同じ出力が欲しいです。

形式が不十分な HTML では失敗する可能性がある正規表現を使用するよりも、もっと堅牢なものが欲しいです。Beautiful Soup を勧める人がたくさんいるのを見ましたが、使用中にいくつか問題がありました。1 つは、JavaScript ソースなどの不要なテキストを拾ってしまうことです。また、HTML エンティティを解釈しません。たとえば、HTML ソース内の ' は、ブラウザーのコンテンツをメモ帳に貼り付けた場合と同じように、テキスト内ではアポストロフィに変換されるはずです。

Update は html2text期待できそうです。HTML エンティティを正しく処理し、JavaScript を無視します。ただし、プレーン テキストを正確に生成するわけではありません。マークダウンを生成するので、それをプレーン テキストに変換する必要があります。例やドキュメントはありませんが、コードはきれいに見えます。


関連する質問:

ベストアンサー1

JavaScript や不要なものを取得せずにテキストを抽出するために私が見つけた最良のコードは次のとおりです。

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

# kill all script and style elements
for script in soup(["script", "style"]):
    script.extract()    # rip it out

# get text
text = soup.get_text()

# break into lines and remove leading and trailing space on each
lines = (line.strip() for line in text.splitlines())
# break multi-headlines into a line each
chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
# drop blank lines
text = '\n'.join(chunk for chunk in chunks if chunk)

print(text)

以下の手順を実行する前に、BeautifulSoup をインストールする必要があります。

pip install beautifulsoup4

おすすめ記事