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

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

目次

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

前準備

Python のインストール(Windows上)

注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.

winget(Windowsパッケージマネージャー)を使用してインストールを行う

  1. Windowsで,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. winget(Windowsパッケージマネージャー)が利用可能か確認する:
    winget --version
    
  3. Pythonのインストール(下のコマンドにより Python 3.12 がインストールされる).
    winget install --scope machine Python.Launcher
    winget install --scope machine Python.Python.3.12
    
  4. 【関連する外部サイト】

    【サイト内の関連ページ】

    openai のインストール

    1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
      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
      

      (以下省略)