jsonscraper
市场
返回期刊

将 IG 个人资料转化为每日变更清单

按计划收集公开资料指标,保存快照,并标记变化,不臆造指标。

编辑政策 报告错误

如果营销人员需要手动检查数十个公开 IG 个人资料,最大的损耗并非打开页面所花的时间,而是缺少可比较的历史记录。单个快照只能显示今天的粉丝数;两个快照则可以计算所选时间段内的差值。要简单监测个人资料,可以自动发送请求,只保存需要的字段,并生成变更表。

下面是一个最小可用的 Python 示例:通过 IG Scraper API 按用户名获取个人资料信息,并写入带时间戳的 JSONL 记录。这样就能建立一个小型历史数据源,可接入 cron、n8n 或自建存储。有关端点和参数的官方说明,请参阅IG API 参考文档。

每日快照解决什么问题

假设团队在跟踪品牌或合作伙伴的公开账号,希望发现粉丝数、发布内容数或认证状态的变化。查看个人资料页面只能看到当前值,本身并不会保留上周的数据状态。因此,首先要确定哪些字段重要,然后连同观测日期一起保存。

文章:将 IG 个人资料转化为每日变更清单
摘要:这是一份监测公开 IG 个人资料的实用指南:发起 API 请求、安全保存密钥、记录历史快照,并计算不同运行批次之间的变化。
图片用途:封面——核心概念
章节:每日快照解决什么问题
视觉主题:编辑风格照片,展示以抽象彩色社交媒体图块为代表的 IG 个人资料卡片,旁边是带日期的纸质数据快照,以及一张模糊的
个人资料提供当前快照;反复保存带日期的记录,就能建立可供比较的历史数据。© jsonscraper · AI 生成

端点 /v1/user/by/username 接受必填参数 username。响应中包含 follower_count、following_count、media_count、is_verified、is_private 和 biography 等字段。这些字段适合用于个人资料快照;它们不包含发布内容的历史记录,也无法单独解释指标变化的原因。

这个脚本有意保持精简:在指定时间获取一组可观测字段,并与之前的记录进行比较。这样,分析人员就能看到例如粉丝数在两次保存之间发生了变化,并在自动采集之外进一步核查。

准备密钥和账号列表

安装请求库,并将 API 密钥设置为环境变量。不要把密钥写入源文件、代码仓库或程序输出中。API 使用查询参数 license_key;下面的库会自动构造查询字符串。

python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="你的密钥"

可以将个人资料列表保存在配置文件或项目变量中。首次运行时,只需使用一个用户名来检查响应、访问权限和存储写入是否正常。示例中的 username 是 API 参数,而密钥仅从环境中读取。

使用 Python 发起请求并保存快照

脚本会检查 HTTP 响应、API 外部状态以及 ig 对象是否存在。接着,它只保存明确存在的值。如果某个字段缺失,记录中会保留为 null:填入零会把未知值与真实的零混为一谈。

文章:将 IG 个人资料转化为每日变更清单
摘要:这是一份监测公开 IG 个人资料的实用指南:发起 API 请求、安全保存密钥、记录历史快照,并计算不同运行批次之间的变化。
图片用途:辅助插图 2——展示另一个具体方面
章节:使用 Python 发起请求并保存快照
视觉主题:清晰的信息图,以俄语展示数据流:定时 Python 请求访问 IG 个人资料端点,生成 JSON 文件
该示意图展示了从个人资料请求到比较两条已保存观测记录的流程。© jsonscraper · AI 生成
import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

API_URL = "https://ig.jsonscraper.com/v1/user/by/username"
LICENSE_KEY = os.environ["JSONSCRAPER_INSTAGRAM_LICENSE_KEY"]
USERNAME = "apple"  # 替换为列表中的个人资料
OUTPUT = Path("instagram-profile-snapshots.jsonl")

response = requests.get(
    API_URL,
    params={"username": USERNAME, "license_key": LICENSE_KEY},
    timeout=30,
)
response.raise_for_status()
payload = response.json()

if payload.get("status") != "ok" or not isinstance(payload.get("ig"), dict):
    raise RuntimeError("API 返回了意外的状态或结构")

profile = payload["ig"]
record = {
    "observed_at": datetime.now(timezone.utc).isoformat(),
    "username": profile.get("username", USERNAME),
    "pk": profile.get("pk"),
    "follower_count": profile.get("follower_count"),
    "following_count": profile.get("following_count"),
    "media_count": profile.get("media_count"),
    "is_verified": profile.get("is_verified"),
    "is_private": profile.get("is_private"),
}

with OUTPUT.open("a", encoding="utf-8") as file:
    file.write(json.dumps(record, ensure_ascii=False) + "\n")

print("快照已保存:", record["username"], record["observed_at"])

示例中的字段和结构与该端点所述的个人资料信息相符。成功请求会返回调用时点的观测结果;若要分析动态变化,需要重复运行脚本并保存每个快照。IG Scraper API 页面展示了基本请求和 JSON 格式的示例响应。

计算快照之间的变化

JSONL 每行保存一条记录,因此可以使用 Python 标准库读取。下面的代码会为指定个人资料选取最近两条记录,并计算粉丝数差值。只有当两条记录都包含数值时,才会输出结果。

import json
from pathlib import Path

rows = [
    json.loads(line)
    for line in Path("instagram-profile-snapshots.jsonl").read_text(encoding="utf-8").splitlines()
]

username = "apple"
profile_rows = [row for row in rows if row.get("username") == username]
profile_rows.sort(key=lambda row: row["observed_at"])

if len(profile_rows) >= 2:
    previous, current = profile_rows[-2:]
    old = previous.get("follower_count")
    new = current.get("follower_count")
    if isinstance(old, int) and isinstance(new, int):
        print({
            "username": username,
            "from": previous["observed_at"],
            "to": current["observed_at"],
            "follower_delta": new - old,
        })

差值严格对应所选的两次观测。如果漏掉了运行,二者之间的间隔就会更长;因此,报告应显示两个日期,而不能自动将变化称为“单日变化”。要定期运行,请在 cron 或云平台的调度器中设置任务。在 n8n 中,也可以用调度器、HTTP 请求和结果写入数据库或表格等节点搭建相同流程;节点名称和存储连接方式取决于你的安装环境。

扩展到多个个人资料

若要处理账号列表,可将用户名放入单独文件并循环读取。分别保存每个请求的状态,这样某个个人资料请求失败时,不会抹去其他账号成功获取的数据。还应设置超时时间、记录错误日志,并只对请求失败的账号重试。

如果 API 返回了 pk,可以将它用作记录键,同时保留用户名以便阅读。标识符有助于区分个人资料本身和报告中的文本标签;如果没有该值,就不应臆造标识符或用其他字段代替。进行分析时,建议以 UTC 保存原始采集时间,并明确设定比较时段。

如果任务只需要按特定频率获取信息,文档所述的 cache_timeout 参数可以设置以秒为单位的缓存时长;IG 默认关闭缓存。请根据监测间隔选择时长,并将其与采集设置一并保存,以便解读结果时考虑请求参数。

最终会得到什么

运行数次后,你将获得一个包含公开指标时间快照的文件,以及一个可计算的简单差值,用于比较选定日期之间的变化。你可以将其加载到 Google Sheets、PostgreSQL 或分析系统中;单独的处理层可以在变化超过团队设定的阈值时生成通知。阈值是你的业务规则,并非 API 内置功能。

个人资料端点返回的是账号字段,因此若要审查新发布的内容,需要使用相应的媒体采集功能,不能从 media_count 推断。在 IG API 参考文档中,另有一个分页获取发布内容的端点,通过 user_id 和 end_cursor 参数加载内容;若任务需要研究具体帖子,请使用该端点。若目标是本文介绍的个人资料指标历史表,那么每位用户发起一次请求并持续保存快照即可。

从一个个人资料和两次运行开始:确认响应状态正确、日期已保存,并且缺失数据仍明确标记为未知。之后再添加账号列表和定时任务。这样,你就能获得一套可重复的观测记录,清楚标明时间间隔和原始值,便于核查并传递到后续分析流程。

人们

尚未列出本文的人员。

继续阅读如何根据发布动态评估 IG 创作者:Python 实用流程
阅读下一篇文章

将阅读内容转化为可用的集成

探索 jsonscraper 社交数据 API、测试请求并构建下一个工作流。

查看 API