stmtkブログ

Python中心の技術ブログです。

【Python】Rebuildのエピソード一覧をExcelに出力する

機能

Rebuildのエピソード一覧をExcelに出力するPythonプログラムです。

エンジニア向けのポットキャストで有名なRebuildがあります。

rebuild.fm

私もよく聞いているのですが、今回はそのエピソード一覧を取得して、Excelに出力します。

一覧ページにはmoreボタンがあるため、全エピソードを取得するためにはスクレイピングでmoreボタンを押す必要があります。

Excelの出力結果は以下です。

サンプル動画

youtu.be

プログラム

#! python3
# 機能
#  Rebuildのエピソード一覧をExcelに出力する
# 使い方
#  1.Pythonを実行する
# 実行コマンド
#  python rebuild_episode_list.py

import time
import openpyxl
from selenium import webdriver
import chromedriver_binary

# 一覧ページを開く
driver = webdriver.Chrome()
driver.get("https://rebuild.fm/")
time.sleep(3)

# moreボタンを押して、全エピソードを表示する
while True:
    more = driver.find_elements_by_css_selector(".episodes .more")
    if len(more) == 0:
        break
    more[0].click()
    time.sleep(2)

# 出力用Excel
wb = openpyxl.Workbook()
sheet = wb.active
sheet.cell(row=1, column=1).value = "日付"
sheet.cell(row=1, column=2).value = "タイトル"
sheet.cell(row=1, column=3).value = "URL"

# エピソードを取得し、Excelに出力する
row = 2
episodes = driver.find_elements_by_css_selector(".episodes .episode")
for episode in episodes:
    date = episode.find_elements_by_css_selector(".date")[0].text
    anchor = episode.find_elements_by_css_selector("h2 a")[0]
    sheet.cell(row=row, column=1).value = date.replace("\n", " ")
    sheet.cell(row=row, column=2).value = anchor.text
    sheet.cell(row=row, column=3).value = anchor.get_attribute("href")
    row += 1

sheet.column_dimensions["A"].width = 15
sheet.column_dimensions["B"].width = 70
sheet.column_dimensions["C"].width = 25

wb.save("エピソード一覧.xlsx")
print("エピソード一覧をExcelに出力しました。")

driver.close()

使い方

  1. Pythonを実行する

実行コマンド

python rebuild_episode_list.py

openpyxlとseleniumとchromedriver-binaryをインストールしていない場合は以下のコマンドでインストールして下さい。

pip install openpyxl
pip install selenium
pip install chromedriver-binary

ドライバーのバージョンによっては実行エラーになる場合があります。

また、ログを抑制する方法などもありますので、以下を参考にして下さい。

stmtk358.hatenablog.com

参考文献

www.oreilly.co.jp