PythonでスクレイピングしてAIで要約する方法【ステップバイステップ解説】

PythonでスクレイピングしてAIで要約する方法【ステップバイステップ解説】

はじめに

この記事では、Pythonを使ってWebサイトからデータをスクレイピングし、そのデータをAI(人工知能)を用いて要約する方法を、初心者の方にも分かりやすくステップバイステップで解説します。データ収集から自動要約までの一連の流れを理解し、効率的な情報処理を実現しましょう。

準備するもの

  • Python 3.6以上
  • 以下のPythonライブラリ:
    • requests: Webサイトへのリクエスト送信
    • BeautifulSoup4: HTMLの解析
    • transformers: AIモデル(今回はHugging Faceのtransformersを使用)
    • torch: PyTorch(transformersの実行に必要な場合)

これらのライブラリは、以下のコマンドでインストールできます。

pip install requests beautifulsoup4 transformers torch

ステップバイステップ解説

ステップ1:スクレイピング対象のWebサイトを選ぶ

まずは、スクレイピングしたいWebサイトを選びましょう。今回は例として、ニュースサイトから記事をスクレイピングすることを想定します。**Webサイトの利用規約を必ず確認し、スクレイピングが許可されているかを確認してください。**

ステップ2:Webサイトからデータを取得する

requestsライブラリを使って、Webサイトにリクエストを送信し、HTMLを取得します。

import requests

url = "https://example.com/news/article1"  # スクレイピング対象のURL
response = requests.get(url)
response.raise_for_status()  # エラーが発生した場合に例外を発生させる
html_content = response.content
source code
Photo by Max Chen on Unsplash

ステップ3:HTMLを解析する

BeautifulSoup4ライブラリを使って、取得したHTMLを解析し、必要な情報を抽出します。**記事のタイトルや本文など、抽出したい要素のHTMLタグとクラス名を調べておきましょう。**

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_content, 'html.parser')

title = soup.find('h1', class_='article-title').text  # タイトルを取得
article_text = soup.find('div', class_='article-body').text # 本文を取得

print(f"タイトル: {title}")
print(f"本文: {article_text}")

ステップ4:AIで要約する

transformersライブラリを使って、AIモデルでテキストを要約します。今回は、Hugging Faceのtransformersライブラリに搭載されている`pipeline`機能を使用します。

from transformers import pipeline

summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6")

summary = summarizer(article_text, max_length=130, min_length=30, do_sample=False) # 要約を実行

print(f"要約: {summary[0]['summary_text']}")
text
Photo by Brett Jordan on Unsplash

コード例(全体)

import requests
from bs4 import BeautifulSoup
from transformers import pipeline

# スクレイピング対象のURL
url = "https://example.com/news/article1"

try:
    # Webサイトからデータを取得
    response = requests.get(url)
    response.raise_for_status()  # エラーが発生した場合に例外を発生させる
    html_content = response.content

    # HTMLを解析
    soup = BeautifulSoup(html_content, 'html.parser')
    title = soup.find('h1', class_='article-title').text  # タイトルを取得
    article_text = soup.find('div', class_='article-body').text # 本文を取得

    # AIで要約
    summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6")
    summary = summarizer(article_text, max_length=130, min_length=30, do_sample=False)

    # 結果を表示
    print(f"タイトル: {title}")
    print(f"要約: {summary[0]['summary_text']}")

except requests.exceptions.RequestException as e:
    print(f"リクエストエラー: {e}")
except AttributeError as e:
    print(f"HTML解析エラー: 指定された要素が見つかりませんでした。HTML構造を確認してください。: {e}")
except Exception as e:
    print(f"エラーが発生しました: {e}")

トラブルシューティング

  • スクレイピングがうまくいかない場合: WebサイトのHTML構造が変更されている可能性があります。HTMLタグとクラス名を再度確認してください。また、robots.txtを確認し、スクレイピングが許可されているか確認してください。
  • BeautifulSoup4で要素が見つからない場合: 指定したHTMLタグとクラス名が正しいか確認してください。また、要素が存在しない可能性もあります。
  • AI要約の精度が低い場合: 使用するAIモデルを変更したり、`max_length`や`min_length`などのパラメータを調整したりしてみてください。

まとめ

この記事では、Pythonを使ってWebサイトからデータをスクレイピングし、AIで要約する方法を解説しました。スクレイピングとAIの組み合わせは、情報収集と分析を効率化するための強力なツールとなります。ぜひ、この知識を活かして、様々なWebサイトのデータを活用してみてください。

📚 関連商品のご紹介

この記事に関連したおすすめ商品です。

仕事に使えるChatGPT入門
仕事に使えるChatGPT入門

ビジネスでChatGPTを活用する実践書

Amazonで見る →
ChatGPT活用大全

ChatGPTを仕事で使いこなすための実践ガイド

Amazonで見る →

Please Select Embedded Mode To Show The Comment System.*

連絡フォーム