跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

30 行 Python 实现公开接口数据抓取与本地化存储

公开接口数据抓取技术通过 Python 脚本分析列表接口,解析元数据并限速存储至本地。核心步骤包括识别 XHR 请求、提取字段、实施频率限制与异常重试机制。代码示例展示如何使用 tenacity 装饰器处理 429 错误,结合随机休眠确保合规采集。最终生成 CSV 文件便于二次分析,强调遵守 robots 协议及版权法规。

孤勇者发布于 2026/3/26更新于 2026/6/1017 浏览
30 行 Python 实现公开接口数据抓取与本地化存储

基于 Python 的公开接口数据抓取与本地化存储方案

核心思路

  1. 分析列表接口:在浏览器 DevTools 中筛选 XHR,发现真实请求 URL 形如 https://api.example.com/api/v2/theme/list?page={page}&size=20,返回体含 data.total 与 data.list。
  2. 解析单条记录:字段 title、author、coverUrl 即为我们需要的元数据,无需再进详情页。
  3. 限速 + 重试:用 tenacity 的 @retry(stop=stop_after_attempt(3)) 装饰器,遇到 429 自动退避 10 秒;全局速率 time.sleep(random.uniform(1, 2)),确保平均 <30 次/分。

运行环境

Python≥3.7,依赖如下:

pip install requests pandas tenacity fake-useragent

代码示例

文件 save_data_meta.py:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
抓取目标站点公开主题合集元信息,仅采集 title/author/coverUrl 三字段。
仅供学习,请遵守平台 robots.txt 与相关法律法规。
"""
import csv, time, random, requests
from tenacity import retry, stop_after_attempt, wait_fixed
from fake_useragent import UserAgent

BASE_URL = "https://api.example.com/api/v2/theme/list"
CSV_FILE = "data_export.csv"
PAGE_SIZE = 20
MAX_PAGE = 50  # 按需调整,0 表示抓全量
SLEEP_RANGE = (1, 2)  # 秒,随机休眠

ua = UserAgent()
session = requests.Session()
session.headers.update({"Referer": "https://www.example.com/"})

@retry(stop=stop_after_attempt(3), wait=wait_fixed(10))
def fetch_one_page():
    session.headers.update({: ua.random})
    params = {: page, : PAGE_SIZE}
    resp = session.get(BASE_URL, params=params, timeout=)
     resp.status_code == :
         Exception()
    resp.raise_for_status()
     resp.json()

 ():
    writer = 
     p  (, MAX_PAGE + ):
        ()
        js = fetch_one_page(p)
        rows = [{: item[], : item[], : item[]}  item  js[][]]
          writer:
            writer = csv.DictWriter((CSV_FILE, , newline=, encoding=), fieldnames=[, , ])
            writer.writeheader()
        writer.writerows(rows)
         js[][] <= p * PAGE_SIZE:
            
        time.sleep(random.uniform(*SLEEP_RANGE))
    ()

 __name__ == :
    main()
page: int
"User-Agent"
"page"
"size"
10
if
429
raise
"Rate limited"
return
def
main
None
for
in
range
1
1
print
f"[+] 正在抓取第 {p} 页..."
"title"
"title"
"author"
"author"
"coverUrl"
"coverUrl"
for
in
"data"
"list"
if
not
open
"w"
""
"utf-8"
"title"
"author"
"coverUrl"
if
"data"
"total"
break
print
f"[√] 抓取完成,已写入 {CSV_FILE}"
if
"__main__"

运行后同级目录生成 data_export.csv,可导入 Excel 或数据库二次分析。若需增量更新,可把 CSV_FILE 改为 SQLite,并在写入前按 title 做唯一索引去重。

注意事项

  • 仅抓取'公开可见'字段,不绕过登录、不破解加密参数;
  • 速率温和,不干扰站点正常服务;
  • 数据勿商用,尊重原作者版权。

目录

  1. 基于 Python 的公开接口数据抓取与本地化存储方案
  2. 核心思路
  3. 运行环境
  4. 代码示例
  5. -- coding: utf-8 --
  6. 注意事项
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 大模型技术指南:从基础理论到实战应用
  • CosyVoice3 支持 ARPAbet 音素标注,提升英文发音准确性
  • Cursor, Kiro 与 Google Antigravity 三款 AI 编程工具对比
  • 基于 Leaflet Trackplayer 实现 WebGIS 高速轨迹可视化
  • Visual Studio 集成 Git 功能使用指南
  • Dify 工作流发布为 MCP Server 实战:第三方工具无缝对接
  • Git 提交信息规范:常用前缀与书写建议
  • Linux 环境下 OpenClaw 安装、初始化与 Web UI 配置
  • 大模型智能体(Agent)架构与核心原理
  • OpenClaw macOS 安装与环境配置指南
  • Testsigma开源自动化测试平台部署与使用指南
  • OpenClaw 多机器人团队协作构建指南
  • AI 时代初级开发者创意生存指南:如何不被工具替代
  • OpenClaw 智能体框架入门:环境搭建、模型配置与远程访问
  • 零依赖纯前端 AI 辅助病例管理系统:无后端实现诊疗行为核验
  • 无线蜂窝网络原理与演进:从 1G 到 6G
  • 大模型学习路线:从新手到专家的完整路径
  • Cesium 无人机智能航线规划:航点动作组与 AI 识别
  • 秒杀场景下的 Redis 分布式锁优化与业务设计
  • VS Code Remote WSL 中 Copilot 代理设置与网络问题排查

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online