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
相关产品推荐
相关产品推荐

