はじめに
現在、データ収集は多くのプロジェクトで重要な役割を果たしています。特に、ニュースサイトから情報を抽出することは、データ分析や機械学習モデルのトレーニングに役立ちます。ここでは、Google Colabを使ってPythonでスクレイピングを行い、ヤフーニュースのタイトルを抽出する方法を紹介します。
1. Google Colabの準備
Google Colabは、無料で使用できるクラウドベースのJupyterノートブック環境です。以下の手順でGoogle Colabを開きます。
- Google Colabにアクセスします。
- 「新しいノートブック」を選択して新しいプロジェクトを作成します。
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つ
- 定期的なスクレイピング: Google Colabのスケジューラ機能を使って、定期的にスクレイピングを実行することができます。例えば、毎日午前9時にスクレイピングを実行するように設定すると、毎日最新のニュースが自動的に取得されます。
- 複数のニュースサイトからのスクレイピング: 1つのスクリプトで複数のニュースサイトから情報を取得することも可能です。スクリプトを修正して、複数のURLからデータを抽出し、CSVファイルにまとめるようにします。例えば、ヤフーニュースとGoogleニュースからタイトルを取得するように修正します。python
urls = [ '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つです。これで、最新のニュースを簡単に取得して分析することができます。