import requests
from bs4 import BeautifulSoup
import csv
import os
import time

# 初期URL
base_url = "https://www.froma.com"
start_url = "https://www.froma.com/tokyo/SJBa07005/"

# ヘッダー情報 (User-Agentを設定)
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}

# CSVファイル名
csv_filename = "C:/temp/froma.csv"

# 初回のみヘッダーを書き込む
if not os.path.exists(csv_filename):
    with open(csv_filename, mode="w", newline="", encoding="utf-8") as file:
        writer = csv.writer(file)
        writer.writerow(["タイトル", "見出し"])  # ヘッダー行

# 現在のページURL
current_url = start_url
page_number = 1

while current_url:
    # ページ取得
    response = requests.get(current_url, headers=headers)
    response.raise_for_status()  # エラーがあれば例外を発生させる
    soup = BeautifulSoup(response.text, "html.parser")

    # 各求人情報を取得
    new_data = []
    for job in soup.select(".job-article__info-wrap,.job-article-outer"):
        title_elem = job.select_one(".FM-jobArticleHead--link,.FM-cassetteHead__job")
        headline_elem = job.select_one(".job-article__header-catch,.FM-cassetteHead__catch") 

        title = title_elem.get_text(strip=True) if title_elem else "N/A"
        headline = headline_elem.get_text(strip=True) if headline_elem else "N/A"

        new_data.append([title, headline])

    # CSVに追記
    with open(csv_filename, mode="a", newline="", encoding="utf-8") as file:
        writer = csv.writer(file)
        writer.writerows(new_data)

    print(f"ページ {page_number} のデータを追加しました。")

    # 次ページのリンクを取得
    next_page_elem = soup.select_one(".pager__next a")
    if next_page_elem:
        next_page_url = next_page_elem["href"]
        current_url = base_url + next_page_url  # 絶対URLに変換
        page_number += 1
        time.sleep(1)  # サーバー負荷を下げるため1秒待機
    else:
        break  # 次のページがなければループを終了

print(f"データを {csv_filename} に保存しました。")
