jsonscraper

如何用 Python 构建 IG 创作者每日监控

面向营销人员或分析师的数据流水线:获取公开资料、保存快照,并在无需手动检查账号的情况下发现变化。

编辑政策 报告错误

营销团队往往需要手动检查数十个账号,才能了解哪些合适的创作者仍在活跃、受众如何变化,以及个人资料上次更新的时间。一次性建立的表格很快就会过时:粉丝数和个人简介会发生变化,帖子发布日期和单篇帖子的指标也需要重新收集。

文章:如何用 Python 构建 IG 创作者每日监控
摘要:本文介绍如何通过 IG Scraper API 自动每日监控一组公开 IG 个人资料:请求资料、保存观察历史,并生成变更报告。
图片用途:封面——核心概念
章节:
视觉主体:数据流水线仪表板概念图,整齐排列的公开社交媒体个人资料卡片将数据传入带时间戳的 JSON 记录,再进入简洁的分析图表。
© jsonscraper · AI 生成的插图

一种实用的做法是维护一份简短的观察日志:每天请求预先整理列表中的公开个人资料,连同采集时间保存响应,并将新值与之前的快照进行比较。这样有助于筛选值得进一步人工检查的账号、评估活跃度并定期生成报告。这不能取代账号所有者的分析数据:例如,公开的个人资料信息并不能提供内部触达指标。

首先确定要追踪的内容

寻找潜在合作伙伴时,通常只需记录一组简短字段:用户名、个人资料标识符、是否已验证、粉丝数、帖子数、简介和采集时间。这些值有助于发现资料变化,并按照选定的细分领域比较账号。实际可用字段取决于 API 响应;处理数据前,应查看文档中的当前 JSON,不要依赖响应里不存在的字段。

若要了解内容活跃度,可以为个人资料补充帖子数据。IG Scraper API 路由清单列出了用户媒体和视频片段的独立路由,以及媒体和评论查询。请在检查个人资料后,将这些内容作为单独步骤接入:先在 Postman 中确认所需参数和响应格式,再只记录报告真正需要的字段。

监控的一条实用原则是:原始响应与规范化记录分开保存。如果 API 响应发生变化,原始 JSON 可供重新核查其解释方式;规范化表格则便于绘制图表和筛选。无论采用哪种方式,都应保存请求时间,以便区分当前值和历史值。

接入 IG Scraper API

jsonscraper 的 IG API 基础地址为 https://ig.jsonscraper.com。官方文档给出了按用户名查询个人资料的请求:GET /v1/user/by/username,参数包括 username、license_key 和 cache_timeout。例如,文档展示了一个测试账号的 URL:https://ig.jsonscraper.com/v1/user/by/username?username=apple&license_key=YOUR_LICENSE_KEY&cache_timeout=60。缓存参数应根据具体路由的规定和自身需求使用:轮询频率应与所需更新速度相匹配。

如需检查响应结构,请打开 IG Scraper API 页面,并前往关联的 Postman 集合。示例中的成功响应包含状态、带有个人资料标识符、用户名和验证标记的 ig 对象,以及时间戳。文档还分别列出了用户、媒体、搜索、话题标签和地点等路由类别,便于在分析需求明确后扩展采集范围。

请将 API 密钥存储在环境变量中,而不是源代码或客户端应用中。jsonscraper 文档建议将密钥保存在环境中,不要嵌入客户端构建版本。还应限制工作流程中对密钥的访问权限,例如只允许后台采集任务使用。

Python 最小可运行示例

下面的脚本从环境变量读取用户名,逐一请求个人资料,并将结果写入 JSONL 文件。JSONL 适合初期原型:每行对应一个快照。代码会有意保存完整响应对象,而不假定个人资料字段总是齐全。首次运行后,请先检查实际响应,再建立稳定的表结构。

import json
import os
import time
from datetime import datetime, timezone
from pathlib import Path
from urllib.parse import urlencode
from urllib.request import Request, urlopen

API_KEY = os.environ["JSONSCRAPER_LICENSE_KEY"]
USERNAMES = [name.strip() for name in os.environ["IG_USERNAMES"].split(",") if name.strip()]
BASE_URL = "https://ig.jsonscraper.com/v1/user/by/username"
OUTPUT = Path("instagram_profiles.jsonl")


def fetch_profile(username: str) -> dict:
    query = urlencode({
        "username": username,
        "license_key": API_KEY,
        "cache_timeout": 60,
    })
    request = Request(f"{BASE_URL}?{query}", headers={"Accept": "application/json"})
    with urlopen(request, timeout=30) as response:
        return json.load(response)


with OUTPUT.open("a", encoding="utf-8") as output:
    for username in USERNAMES:
        collected_at = datetime.now(timezone.utc).isoformat()
        try:
            payload = fetch_profile(username)
            row = {
                "collected_at": collected_at,
                "requested_username": username,
                "ok": True,
                "payload": payload,
            }
        except Exception as exc:
            row = {
                "collected_at": collected_at,
                "requested_username": username,
                "ok": False,
                "error": str(exc),
            }

        output.write(json.dumps(row, ensure_ascii=False) + "\n")
        output.flush()
        time.sleep(1)

运行前,请在环境中设置配置:

export JSONSCRAPER_LICENSE_KEY="你的密钥"
export IG_USERNAMES="creator_one,creator_two,creator_three"
python monitor.py

示例中的暂停是为了让列表按顺序处理得更平稳,并不代表 API 宣布的调用限制。配置生产环境的运行计划和错误处理时,请结合所用套餐、文档和时效要求。若请求失败,保存记录可以帮助发现问题,而不是悄悄跳过账号。

检查响应后再规范化数据

了解所用路由的响应后,选出一组稳定的列。例如,观察表可以包含采集时间、用户名、个人资料标识符、已验证的响应状态,以及 JSON 中实际存在的所需计数值。请为每个字段明确规定缺失时的处理方式:保存空值、将记录标记为不完整,或将其列入待复查清单。

不要用今天的值覆盖昨天的记录。保留快照历史,才能计算日期之间的差值并发现变化。对于粉丝数,应比较同一个人资料相邻的成功观察记录;相比仅通过用户名比较,使用稳定标识符更可靠,因为用户名可能会改变。

如果原始响应包含超出报告所需范围的数据,应考虑设置有限的保留期限。规范化表格只应包含具体任务所需的字段。对于公开创作者研究,这通常能减少数据量,也更容易说明收集这些信息的目的。

添加每日运行和通知

在服务器上,可以用 cron 等任务调度程序运行脚本;在自动化平台中,则可以按计划触发并发送 HTTP 请求。基本流程包括触发器、读取个人资料列表、逐一调用路由、检查响应是否成功、将记录写入存储,以及生成摘要。在 n8n 或 Make 中,可将这些步骤拆分为独立节点,这样单个个人资料出错也不会中断整个列表的处理。

报告可以计算一些简单指标:成功处理的个人资料数量、与上一次成功快照相比粉丝数发生变化的账号,以及记录最近一次更新的时间。单独列出错误,有助于迅速发现用户名无效、个人资料无法访问或请求出现临时问题。如果要添加帖子数据,请先确定所需的历史深度和字段,再接入文档中相应的路由。

缓存也应经过合理配置。文档将 cache_timeout 描述为受支持路由用于重复使用近期结果的参数。生成每日比较报告时,应根据所需的数据新鲜度设置模式;如果没有在日志中标明,就不要把缓存响应当作新的检查点。

这类监控能展示什么

积累快照后,团队就能获得一段可核验的、针对所选公开个人资料的观察历史。团队可以比较指标变化、找出长期未更新的记录,并整理出一份简短的账号名单供人工评估。如果所选路由和任务支持媒体采集,还可以为个人资料添加帖子数据,分析发布节奏或内容形式,但前提是文档已确认具体字段可用。

应将指标用作研究工作的筛选工具,而不是决定是否合作的自动化依据。粉丝数本身无法说明受众是否符合品牌定位、内容质量如何,或创作者是否适合商业合作。请安排人工检查个人资料,并将筛选标准与技术采集流程分开保存。

若要试运行,请打开 Postman 中的 IG API 集合,配置密钥并执行个人资料请求。随后将已验证的参数移入脚本或自动化流程。这样便能建立可重复的每日采集流程、变更历史和分析报告基础,无需从头编写网页解析器。

People

No people listed for this article yet.

Keep reading如何衡量 IG 竞争对手内容的变化:Python API 流水线
Read the next article

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

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

查看 API