Google Colabを使ったPythonスクレイピング:ヤフーニュースのタイトル抽出

はじめに

現在、データ収集は多くのプロジェクトで重要な役割を果たしています。特に、ニュースサイトから情報を抽出することは、データ分析や機械学習モデルのトレーニングに役立ちます。ここでは、Google Colabを使ってPythonでスクレイピングを行い、ヤフーニュースのタイトルを抽出する方法を紹介します。

1. Google Colabの準備

Google Colabは、無料で使用できるクラウドベースのJupyterノートブック環境です。以下の手順でGoogle Colabを開きます。

  1. Google Colabにアクセスします。
  2. 「新しいノートブック」を選択して新しいプロジェクトを作成します。

2. 必要なライブラリのインストール

スクレイピングには、BeautifulSoupとrequestsというライブラリを使用します。これらのライブラリをインストールするには、以下のコードをノートブックに貼り付けて実行します。

python

!pip install beautifulsoup4
!pip install requests

3. スクリプトの記述

以下のコードをノートブックに貼り付け、ヤフーニュースのタイトルを抽出するスクレイピングスクリプトを作成します。

python

import requests
from bs4 import BeautifulSoup

# ヤフーニュースのURL
url = 'https://news.yahoo.co.jp/'

# ページを取得
response = requests.get(url)
response.raise_for_status()  # 要求が成功したか確認

# BeautifulSoupを使ってHTMLをパース
soup = BeautifulSoup(response.content, 'html.parser')

# タイトルを抽出
titles = soup.find_all('h3', class_='sc-1m2tg68-0 cMZsPf')

# タイトルを表示
for title in titles:
    print(title.get_text())

4. スクリプトの実行

上記のコードをノートブックセルに貼り付け、Shift + Enterを押して実行します。実行結果として、ヤフーニュースのタイトルが表示されます。

5. 結果の保存

抽出されたタイトルをCSVファイルに保存するには、以下のコードを追加します。

python

import pandas as pd

# タイトルをリストに格納
title_list = [title.get_text() for title in titles]

# DataFrameに変換
df = pd.DataFrame(title_list, columns=['Title'])

# CSVファイルに保存
df.to_csv('yahoo_news_titles.csv', index=False)

このコードを実行すると、抽出されたタイトルがyahoo_news_titles.csvという名前のCSVファイルに保存されます。

6. Google Driveに保存

Google Colabでは、Google Driveに直接ファイルを保存することも可能です。以下のコードを追加して、CSVファイルをGoogle Driveに保存します。

python

from google.colab import drive
drive.mount('/content/drive')

# Google Driveに保存
df.to_csv('/content/drive/My Drive/yahoo_news_titles.csv', index=False)

7. 簡単な裏技2つ

  1. 定期的なスクレイピング: Google Colabのスケジューラ機能を使って、定期的にスクレイピングを実行することができます。例えば、毎日午前9時にスクレイピングを実行するように設定すると、毎日最新のニュースが自動的に取得されます。
  2. 複数のニュースサイトからのスクレイピング: 1つのスクリプトで複数のニュースサイトから情報を取得することも可能です。スクリプトを修正して、複数のURLからデータを抽出し、CSVファイルにまとめるようにします。例えば、ヤフーニュースとGoogleニュースからタイトルを取得するように修正します。pythonurls = [ 'https://news.yahoo.co.jp/', 'https://news.google.com/' ] all_titles = [] for url in urls: response = requests.get(url) response.raise_for_status() soup = BeautifulSoup(response.content, 'html.parser') titles = soup.find_all('h3', class_='sc-1m2tg68-0 cMZsPf') all_titles.extend([title.get_text() for title in titles]) df = pd.DataFrame(all_titles, columns=['Title']) df.to_csv('multiple_news_titles.csv', index=False)

以上が、Google Colabを使ったPythonスクレイピングでヤフーニュースのタイトルを抽出する方法と、簡単な裏技2つです。これで、最新のニュースを簡単に取得して分析することができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA