Web ページのテキストデータのダウンロード(Python を使用)(Windows 上)
【要約】 このページのPythonプログラムは指定したURLからWebページのHTMLをダウンロードし,不要な要素やフレーズを削除した上でテキストとして保存する.主な処理手順は次の通りである:HTMLダウンロード,imgとpreタグの削除,本文の抽出,不要なフレーズの削除,空行の削除,テキストファイルとして保存.削除対象のフレーズはプログラム内で指定され,広告表現や特定の語句などが含まれる.プログラムはコマンドラインからURLと保存するファイル名を引数として受け取り.処理を行う.
【目次】
前準備
Python のインストール(Windows上)
注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.
winget(Windowsパッケージマネージャー)を使用してインストールを行う
- Windowsで,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
- winget(Windowsパッケージマネージャー)が利用可能か確認する:
winget --version
- Pythonのインストール(下のコマンドにより Python 3.12 がインストールされる).
- Python詳細ガイド:Pythonまとめ »
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
python -m pip install -U --ignore-installed pip python -m pip install -U bs4
- 指定されたURLからHTMLをダウンロードする.
- img, pre 要素を削除する.
- テキストの本文部分を抽出する.
- 指定したフレーズ(プログラム内で指定)を取り除く.
- 空行を取り除く.
- 抽出されたテキストを指定されたファイル名でテキストファイルとして保存.
- Windows で,コマンドプロンプトを実行
- エディタを起動
cd /d c:%HOMEPATH% notepad download.py
- エディタで,次のプログラムを保存
''' このプログラムは,ウェブページのHTMLを解析し,特定の要素(preタグとimgタグ)を削除する.その後,HTMLからテキストを抽出し,不要なフレーズを削除する.削除されるフレーズは,ソースコード内で定義された一連の文字列で,これには広告表現や日本語の丁寧な文末表現などが含まれている.削除したいフレーズのリストは柔軟であり,ソースコードを書き換えることで容易にフレーズを変更することができる.最終的に,抽出されたテキストは指定したファイルに保存される. ''' import requests from bs4 import BeautifulSoup import re import sys def download_html_and_save_as_text(url, filename): # URLからHTMLをダウンロード response = requests.get(url) response.encoding = response.apparent_encoding # 文字コードを自動的に判定 # HTMLをパース soup = BeautifulSoup(response.text, 'html.parser') # 不要なHTMLタグを削除 (preとimg) for tag_type in ['pre', 'img']: for tag in soup.find_all(tag_type): tag.decompose() # 不要なフレーズを削除 remove_strings = [ 'この記事は広告です', '広告掲載によるものです', 'この記事は広告です', 'バナー広告表示', 'バナー広告', 'バナー', '広告掲載', '広告提供', 'ポップアップ広告', 'ポップアップ広告表示', '広告', 'スポンサード', 'Sponsored', 'Sponsor', 'Ads', 'クリックして続きを読む', '詳細はこちら', '関連記事', '続きを読む', '詳細を確認する', '共有する', 'シェアする', 'ツイートする', 'もっと見る', '検索オプション', '検索履歴の表示', 'ご意見・ご要望をお聞かせください', '個人情報保護ポリシー', '規約ページ', 'ウェブサイト利用', 'new!', 'ニュースランキング', '写真ランキング', '動画ランキング', 'お客さまのご利用端末からの情報の外部送信について', 'マイページ', '購入履歴', 'トップ速報', '特定商取引法の表示', ] # 本文を抽出 text = soup.get_text() # 各不要なフレーズを削除 for remove_string in remove_strings: text = text.replace(remove_string, '') # 空行を取り除く text = re.sub(r'\n\s*\n', '\n', text) # テキストファイルに保存 with open(filename, 'w', encoding='utf-8') as f: f.write(text) # コマンドライン引数からURLとファイル名を取得 url = sys.argv[1] filename = sys.argv[2] # 関数を実行 download_html_and_save_as_text(url, filename)
- Python プログラムの実行
Python プログラムの実行
- Windows では python (Python ランチャーは py)
- Ubuntu では python3
【サイト内の関連ページ】 Python のまとめ: 別ページ »
プログラムを download.pyのようなファイル名で保存したので, 「python download.py」のようなコマンドで行う.
https://www.google.com のところにはダウンロードしたい URL を指定すること.
out.txt のところには結果を保存したいファイル名を指定すること.
python download.py https://www.google.com out.txt
- 結果の確認
notepad out.txt
(以下省略)
【関連する外部サイト】
【サイト内の関連ページ】
openai のインストール
Web ページのテキストデータのダウンロード(Python を使用)
このプログラムは,指定されたURLからHTMLをダウンロードし,指定されたファイル名でテキストファイルとして保存する.