Web ページのテキストデータのダウンロード(Python を使用)(Windows 上)

要約】 このページのPythonプログラムは指定したURLからWebページのHTMLをダウンロードし,不要な要素やフレーズを削除した上でテキストとして保存する.主な処理手順は次の通りである:HTMLダウンロード,imgとpreタグの削除,本文の抽出,不要なフレーズの削除,空行の削除,テキストファイルとして保存.削除対象のフレーズはプログラム内で指定され,広告表現や特定の語句などが含まれる.プログラムはコマンドラインからURLと保存するファイル名を引数として受け取り.処理を行う.

目次

  1. 前準備
  2. Web ページのテキストデータのダウンロード(Python を使用)

前準備

Python 3.12 のインストール

以下のいずれかの方法で Python 3.12 をインストールする。

方法1:winget によるインストール

Python がインストール済みの場合、この手順は不要である。管理者権限コマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。

winget install -e --id Python.Python.3.12 --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 AssociateFiles=1 InstallLauncherAllUsers=1"

--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。

方法2:インストーラーによるインストール

  1. Python 公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンから Windows 用インストーラーをダウンロードする。
  2. ダウンロードしたインストーラーを実行する。
  3. 初期画面の下部に表示される「Add python.exe to PATH」に必ずチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから python コマンドを実行できない。
  4. 「Install Python 3.xx for all users」にチェックを入れ、「Install」をクリックする。

インストールの確認

コマンドプロンプトで以下を実行する。

python --version

バージョン番号(例:Python 3.12.x)が表示されればインストール成功である。「'python' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していない。

openai のインストール

  1. 以下の手順を管理者権限コマンドプロンプトで実行する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
  2. python -m pip install -U --ignore-installed pip
    python -m pip install -U bs4
    

Web ページのテキストデータのダウンロード(Python を使用)

このプログラムは,指定されたURLからHTMLをダウンロードし,指定されたファイル名でテキストファイルとして保存する.

  1. Windows で,コマンドプロンプトを実行
  2. エディタを起動
    cd /d c:%HOMEPATH%
    notepad download.py
    
  3. エディタで,次のプログラムを保存
    '''
    このプログラムは,ウェブページの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)
    
  4. Python プログラムの実行
    Python プログラムの実行

    【サイト内の関連ページ】 Python のまとめ: 別ページ »

    プログラムを download.pyのようなファイル名で保存したので, 「python download.py」のようなコマンドで行う.

    https://www.google.com のところにはダウンロードしたい URL を指定すること.

    out.txt のところには結果を保存したいファイル名を指定すること.

    python download.py https://www.google.com out.txt
    
  5. 結果の確認
    notepad out.txt
    

    (以下省略)