跳轉到

Random User

Random User 是免費、開源的假會員資料 API,可以產生姓名、性別、Email、電話、地址、照片等資料,官方也把它定位成「像 Lorem Ipsum 一樣,但用在人員資料」的測試資料產生器。

# API 網址
https://randomuser.me/api/

# 一次產生多筆:
https://randomuser.me/api/?results=10

# 指定國家
https://randomuser.me/api/?nat=us,gb,ca

# 只取需要欄位:
https://randomuser.me/api/?inc=name,email,phone,location,picture

範例:取得一位假會員資料

"""取得一位假會員資料"""
import requests


API_URL = "https://randomuser.me/api/"


def main() -> None:
    # 發送 GET 請求,向 Random User API 要一筆假會員資料
    response = requests.get(API_URL, timeout=10)

    # 檢查 HTTP 狀態碼,如果失敗會丟出錯誤
    response.raise_for_status()

    # 將 JSON 回傳結果轉成 Python 字典
    data = response.json()

    # results 是一個清單,第一筆會員資料放在 results[0]
    user = data["results"][0]

    # 取出常用欄位
    name = user["name"]
    full_name = f"{name['title']} {name['first']} {name['last']}"
    email = user["email"]
    phone = user["phone"]
    country = user["location"]["country"]
    city = user["location"]["city"]
    picture = user["picture"]["large"]

    print("===== 假會員資料 =====")
    print(f"姓名:{full_name}")
    print(f"Email:{email}")
    print(f"電話:{phone}")
    print(f"國家:{country}")
    print(f"城市:{city}")
    print(f"照片:{picture}")


if __name__ == "__main__":
    main()

產生 20 位會員並匯出 CSV

""" 產生 20 位會員並匯出 CSV """
import requests
import pandas as pd


API_URL = "https://randomuser.me/api/"


def fetch_users(count: int = 20) -> list[dict]:
    """
    從 Random User API 取得多筆假會員資料。
    """
    params = {
        "results": count,
        "inc": "name,gender,email,phone,location,picture,login,dob,nat"
    }

    response = requests.get(API_URL, params=params, timeout=10)
    response.raise_for_status()

    data = response.json()
    return data["results"]


def clean_user(user: dict) -> dict:
    """
    將 API 原始資料整理成比較適合課堂使用的格式。
    """
    name = user["name"]
    location = user["location"]
    dob = user["dob"]

    return {
        "會員ID": user["login"]["uuid"],
        "姓名": f"{name['title']} {name['first']} {name['last']}",
        "性別": user["gender"],
        "年齡": dob["age"],
        "Email": user["email"],
        "電話": user["phone"],
        "國家": location["country"],
        "城市": location["city"],
        "地址": f"{location['street']['number']} {location['street']['name']}",
        "國籍代碼": user["nat"],
        "大頭貼": user["picture"]["medium"]
    }


def main() -> None:
    users = fetch_users(count=20)

    # 將每一位會員整理成乾淨格式
    cleaned_users = [clean_user(user) for user in users]

    # 轉成 pandas DataFrame
    df = pd.DataFrame(cleaned_users)

    print("===== 會員資料表 =====")
    print(df)

    # 匯出 CSV,方便後續做資料分析或後台系統練習
    df.to_csv("API_Requests_datasets/random_users.csv", index=False, encoding="utf-8-sig")

    print("\n已匯出 random_users.csv")


if __name__ == "__main__":
    main()