前回は、Pythonを使って自分のブログのページタイトルを取得する方法を書きました。
今回は、複数ページにアクセスしながらタイトル、および他要素になっている日付も取得してcsvファイルに書き出す方法を解説します。
自分のブログにあるBabylon.jsカテゴリ132件について、このように書き出すことができました。
使用した環境
- Mac OS Tahoe 26.1
- Python 3.14.2
1. 書いたコードの全体
作ったコードはこちらです。
ベースとしたコードは、勉強のために購入したこちらの書籍の第3章です。
www.shuwasystem.co.jp
ただ、Pythonのバージョン違いのためかChrome Driverやwriteが動かなかったので変更、その他自分の理解の問題でよくわからない書き方は、わかる書き方に変えました。
Chrome Driverからの変更については、こちらの記事のおかげで解決できました。
nabenavi.net
一部を解説します。
page_option = f"?page={page_num}" ここにある"f"はf文字列という手法です。(最初は誤植かと思いました)
色々使い方がありそうですが、今回の使い方では、文字列で囲った範囲に、page_numという変数を反映させることができています。
これにより、base_url+page_optionという書き方で、page_numが3,4のように変わっても、page_optionは"?page=3", "?page=4"のように動的に変更することが可能です。
base_url = "https://www.crossroad-tech.com/archive/category/babylonjs" page_option = f"?page={page_num}" next_url = base_url + page_option
こちらが参考になりました。
【Python入門】f文字列とは?基本的な使い方やformatとの違いについて解説 | Python::HACK
また、その後の driver.get(next_url) によって、指定したURLにアクセスしてページを表示します。
次の get_item_urls(driver): 関数では、前回紹介したXPATHで定義する特定要素があるかを判断、もしあればlen () > 0 なので続行、なければ結果が0になるのでif文終了になります。
for i in range(1,32): は31回ループします。
2. ページ送りとなる繰り返し実行はWhileで実現
ページ切り替え (update_page_num) 、日付+タイトル+URL取得(get_item_urls)、ページが最後なのかを確認 (is_last_page) という繰り返しです。
while True: update_page_num(driver, page_num) time.sleep(SLEEP_TIME) get_item_urls(driver) if is_last_page(driver): break page_num += 1
3. csvファイル書き出し
元々参考にしたコードでは、writeの処理でエラーが出て実行できなかったので、前回調べたwith openという処理で動くように書き換えました。
また、for i in range(0, len(results), 3): はresultsの要素を3つずつ取得しながらループという意味です。Pythonはこういう処理があるので便利ですね。
with open("blog_title.csv", "w", newline="") as f: writer = csv.writer(f) writer.writerow(["Date","Blog Title", "URL"]) rows = [] for i in range(0, len(results), 3): rows.append((results[i], results[i+1], results[i+2])) writer.writerows(rows)
今のresults変数は、このようにdate, title, urlの3つが1組で繰り返されています。そのため、3つ単位で区切って繰り返すことにしました。
2025-12-25,2025年のBabylon.jsコミュニティーを振り返る,https://www.crossroad-tech.com/entry/babylonjs-community-2025,2025-12-21,Babylon.js EditorでPost Processを調整して、きれいな風景をつくってみる,https://www.crossroad-tech.com/entry/babylonjs-editor-postprocess,2025-12-20, (以降続く)
また、rows.append((results[i], results[i+1], results[i+2])) によって、3つ書いては改行という処理になっています。
これらの処理によって、csvファイルがみやすくなります。
2025-12-25,2025年のBabylon.jsコミュニティーを振り返る,https://www.crossroad-tech.com/entry/babylonjs-community-2025 2025-12-21,Babylon.js EditorでPost Processを調整して、きれいな風景をつくってみる,https://www.crossroad-tech.com/entry/babylonjs-editor-postprocess 2025-12-20 (以降続く)
4. おわりに
これで複数ページにまたがっても情報取得ができるようになりました。
次は個別の記事に移動して画像を取得するとか、文字以外の情報取得も試してみたいと思います。
