はじめに

こんにちは、福原です。

今回はクレスコエンジニアブログの記事一覧をスクレイピングして
各記事の「タイトル、URL、カテゴリ、日付」をCSVファイルに出力してみました。

その際に、Pythonの開発環境を用意してくれるGoogle Colaboratoryを使ってみたので
インストール方法などを簡単に紹介していきます。

目次

Colaboratoryのインストール

①Googleドライブを開く

Googleトップページからメニューアイコンをクリックし、
ドライブをクリック

②GoogleドライブにGoogle Colaboratoryを追加

新規ボタンをクリック
その他→アプリを追加をクリック

「Colaboratory」を選択した後、インストールボタンで完了!

これで初期設定は完了です!

ファイルを開く

Googleドライブの画面から新規ファイルを作成していきます

①Google Colaboratoryファイルを新規作成

新規ボタンをクリック
その他→Google Colaboratoryをクリック

②Untitled0.ipynbファイルが表示

「Untitled0.ipynb」ファイルが表示されます
画像の赤枠にPythonコードを書いていきます

Pythonを書く

実際にブログ記事の情報を取得していきます

今回使用するライブラリは以下2つです

  1. BeautifulSoup = スクレイピング用
  2.  Requests = WEB ページのダウンロード用

まずはRequestsでエンジニアブログトップページのhtmlをダウンロードします。

from bs4 import BeautifulSoup as bs4
import requests
# 情報を取得したい URL を指定する
url = 'https://○○○○/'
# Requests で URL 先の html を取得する
res = requests.get(url)

次にBeautifulSoupでブログ記事一覧を取得します
開発者ツールで、どのクラスを取得するか確認します

soup = bs4(res.content, "html.parser")
article_list = soup.find("div", {'class' : 'post-loop-wrap'})

さらに、find_allメソッドを使い、ブログ記事一覧をリストに分けます

article_info_list = article_list.find_all('article')

次に各記事からタイトル、URL、カテゴリ、日付を取得します

# 結果用のリストを作成する
result = [['title', 'url', 'category', 'date']]
# 各記事の情報を取得して、リストに格納する
for article_info in article_info_list:
title = article_info.find('h2').text # タイトル
url = article_info.find('a').get('href') # URL
category = article_info.find('li', attrs={ 'class': 'cat' }).text # カテゴリ
date = article_info.find('li').get('datetime') # 日付
result.append([title, url, category, date])

最後に情報をCSVファイルに保存します

import csv
with open('article_info.csv', 'w', encoding="utf-8") as file:
writer = csv.writer(file, lineterminator='\n')
writer.writerows(result)

左のファイルからCSVファイルを開くことができます

タイトル、URL、カテゴリ、日付が取得できました!

おわりに

今回はGoogle Colaboratoryを使って、スクレイピングをやってみました。
初学者にとって環境構築を避けることができるのは
とても魅力的なメリットだと感じました。
Googleアカウントを持っているだけで、簡単にWEBスクレイピングができたので、
もし興味がある方は、ぜひ使ってみてください!