Filmarksのレビューをエクスポートする

はじめに

通勤時間が2時間半と長いので、出社する日は映画を2−3本くらい見ています。

せっかくたくさん映画を見ているので、Filmarksで記録するようにしました。

ただ、昔使っていたWATCHAのように映画のレコメンドを受けるには月500円ほど課金してプレミアム会員になる必要があります…

 ChatGPTに今までのレビュー結果を読ませてレコメンドさせればよいかと思いましたが、Filmarksにはエクスポート機能がありません。

そのため、自分のレビュー記録をスクレイピングして、レビュー記録をエクスポートするスクリプトを(ChatGPTが)作成しました。

当時はChatGPTのモデルが4oだったので、出力されたコードもバグが多く、修正はちょっと苦労しましたね…

同じことで困っている人はご活用ください。

スクレイピングのコード

Step0  動作環境

pythonが入っていれば動くはずです。

自分はMacなのでデフォで入っていますが、Win派の方はなんかいい感じにPythonをインストールしてください。

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

pip3 install requests beautifulsoup4 pandas

でスクリプトの依存ライブラリをインストールしてください。

ぱそこんぜんぜんわからないので、各ライブラリがどのような働きをしているかは知りません。

Step2 コードを書く

以下コードを拡張子pyで保存します。ユーザIDは自分のものに変えてください。このまま実行すると私のレビューが取得されます。

import requests
from bs4 import BeautifulSoup
import pandas as pd
import time

USERNAME = "Hrvtuirvw"  # ← 自分のユーザーIDに変更
BASE_URL = f"https://filmarks.com/users/{USERNAME}"
HEADERS = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15"
}

def scrape_all_marks():
    results = []
    page = 1

    while True:
        url = f"{BASE_URL}?page={page}"
        print(f"\n📄 Fetching page {page}: {url}")
        res = requests.get(url, headers=HEADERS)
        soup = BeautifulSoup(res.text, "html.parser")

        cards = soup.select("div.c-content-card")
        print(f"🔍 Cards found on page {page}: {len(cards)}")
        if not cards:
            print("🛑 No more cards found. Stopping.")
            break

        for i, card in enumerate(cards):
            title_tag = card.select_one("h3.c-content-card__title a")
            rating_tag = card.select_one("div.c-rating__score")
            comment_tag = card.select_one("p.c-content-card__review span")

            title = title_tag.text.strip() if title_tag else f"NO TITLE {i}"
            movie_href = title_tag.get("href") if title_tag else ""
            rating = rating_tag.text.strip() if rating_tag else ""
            comment = comment_tag.text.strip() if comment_tag else "(no comment)"

            results.append({
                "Title": title,
                "Rating": rating,
                "Comment": comment,
                "MoviePageURL": f"https://filmarks.com{movie_href}" if movie_href else "",
            })

        page += 1
        time.sleep(1)  # DDosと思われて、IPがBANされないようにちょっと待つ。気にしない人は自己責任で消してください。

    return results

if __name__ == "__main__":
    reviews = scrape_all_marks()

    df = pd.DataFrame(reviews)
    import csv
    df.to_csv("filmarks_review_all.csv", index=False, encoding="utf-8-sig")
    print("\n✅ 完了!filmarks_review_all.csv に保存済み")

Step3 実行

保存したpythonスクリプトがあるディレクトリに移動し、実行するとレビューをスクレイピングしてfilmarks_review_all.csvというファイルに出力されます。やったね。

↓ 中身はこんな感じです

最後に

結局ChatGPTにレコメンドさせても微妙だったので、大人しくWATCHAを使うかFilmarksに課金するのが良さそうです。

https://chatgpt.com/share/68aff7c2-7358-800a-b922-0c9b91aca3b8

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください