You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django环境下用代码实现API认证获取JSON数据(PyCharm)

结论:别写在Django核心文件里,单独写独立脚本

你这个需求是离线批量抓取API数据做分析,属于和Django Web服务无关的脚本任务,完全不需要写到views.py这类Django业务文件里——把分析脚本混进Web服务代码里会让项目结构混乱,也没必要。

正确的做法是:在你的Django项目根目录下新建一个独立的Python脚本(比如命名为fetch_api_data.py),直接在PyCharm里运行这个脚本即可。

脚本核心步骤示例

1. 初始化Django环境(仅当API是你自己的Django项目时需要)

如果这些API是你自己的Django项目提供的,脚本需要先加载Django的配置,否则可以跳过这部分:

import os
import django

# 替换成你的项目settings路径
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project_name.settings')
django.setup()

2. 核心抓取与转换代码

import requests
import pandas as pd

# 你的认证信息
USERNAME = "your_username"
PASSWORD = "your_password"

# 批量API URL列表(可以从txt文件读取,避免手动写100+个)
api_urls = [
    "https://your-domain.com/api/endpoint1/",
    "https://your-domain.com/api/endpoint2/",
    # ... 其他URL
]

all_data = []

for url in api_urls:
    try:
        # 发送带用户名密码认证的请求(如果是Token认证,换成headers传Token)
        response = requests.get(url, auth=(USERNAME, PASSWORD))
        response.raise_for_status()  # 自动抛出请求错误
        json_data = response.json()
        
        # 处理JSON格式:如果是列表就扩展,单个对象就添加
        if isinstance(json_data, list):
            all_data.extend(json_data)
        else:
            all_data.append(json_data)
    except Exception as e:
        print(f"请求{url}失败: {str(e)}")

# 转换为DataFrame
df = pd.DataFrame(all_data)

# 保存或分析
df.to_csv("api_analysis_data.csv", index=False)
print("数据抓取完成,已保存为api_analysis_data.csv")

补充说明

  • 如果API用的是Token认证而非用户名密码,把auth=(USERNAME, PASSWORD)换成headers参数:
    headers = {"Authorization": f"Token your_auth_token"}
    response = requests.get(url, headers=headers)
    
  • 100+个URL可以存在txt文件里,用代码读取:
    with open("api_urls.txt", "r") as f:
        api_urls = [line.strip() for line in f if line.strip()]
    

内容的提问来源于stack exchange,提问作者xlxdxf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 10:17:25