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

求助:如何抓取近一年Instagram帖子数据并导出至CSV/XLSX

提取社交媒体帖子数据(含触达量)并导出CSV/XLSX的解决方案

一、核心说明:触达量属于私密洞察数据,必须用官方API

你用instaloader拿不到触达量是因为这类数据属于平台的私密洞察指标,只有账号管理员通过官方API才能获取,第三方爬虫工具只能抓取公开可见的内容(比如点赞数、发布日期)。下面针对主流平台(以Instagram为例,你提到的instaloader对应这个平台)给出可行方案:

二、Instagram平台:用Meta Graph API(Business/Creator账号专属)

准备条件

  • 目标Instagram账号必须是企业账号或创作者账号(个人账号无法获取洞察数据)
  • 注册Meta开发者账号,创建应用并获取access_token(需要账号管理员授权)
  • 申请权限:instagram_basic、pages_show_list、instagram_insights

Python代码实现(可直接运行)

先安装依赖:

pip install requests pandas python-dotenv

代码示例:

import requests
import pandas as pd
from datetime import datetime, timedelta
import os
from dotenv import load_dotenv
import time

# 加载敏感信息(建议把token和账号ID存到.env文件,避免硬编码)
load_dotenv()
ACCESS_TOKEN = os.getenv('ACCESS_TOKEN')
IG_BUSINESS_ACCOUNT_ID = os.getenv('IG_BUSINESS_ACCOUNT_ID')

# 计算过去一年的时间范围
end_date = datetime.now().strftime('%Y-%m-%d')
start_date = (datetime.now() - timedelta(days=365)).strftime('%Y-%m-%d')

def get_media_list():
    """拉取过去一年的所有帖子基础信息"""
    url = f'https://graph.facebook.com/v18.0/{IG_BUSINESS_ACCOUNT_ID}/media'
    params = {
        'fields': 'id,caption,timestamp',
        'since': start_date,
        'until': end_date,
        'access_token': ACCESS_TOKEN
    }
    media_list = []
    while url:
        response = requests.get(url, params=params)
        data = response.json()
        media_list.extend(data.get('data', []))
        url = data.get('paging', {}).get('next')
        time.sleep(1)  # 加延时避免触发API速率限制
    return media_list

def get_media_insights(media_id):
    """获取单条帖子的触达量、点赞数"""
    url = f'https://graph.facebook.com/v18.0/{media_id}/insights'
    params = {
        'metric': 'reach,like_count',
        'access_token': ACCESS_TOKEN
    }
    response = requests.get(url, params=params)
    data = response.json()
    insights = {}
    for metric in data.get('data', []):
        insights[metric['name']] = metric['values'][0]['value']
    time.sleep(1)
    return insights

# 主逻辑:抓取+导出
if __name__ == '__main__':
    media_list = get_media_list()
    posts_data = []
    
    for media in media_list:
        post_info = {
            '发布日期': media['timestamp'],
            '帖子ID': media['id'],
            '文案': media.get('caption', '')
        }
        insights = get_media_insights(media['id'])
        post_info['触达量'] = insights.get('reach', 0)
        post_info['点赞数'] = insights.get('like_count', 0)
        posts_data.append(post_info)
    
    # 格式化数据并导出
    df = pd.DataFrame(posts_data)
    df['发布日期'] = pd.to_datetime(df['发布日期']).dt.strftime('%Y-%m-%d %H:%M:%S')
    # 导出CSV和XLSX
    df.to_csv('郡社交媒体帖子数据.csv', index=False, encoding='utf-8-sig')
    df.to_excel('郡社交媒体帖子数据.xlsx', index=False)
    print('数据导出完成!')

三、多平台扩展方案

如果需要提取Facebook、Twitter/X等其他平台的数据:

  • Facebook Pages:用Facebook Pages API,逻辑和Instagram类似,可获取帖子的触达量、互动数据
  • Twitter/X:用API v2,通过public_metrics字段获取展示量(对应触达)、点赞数,需申请开发者账号和API密钥

四、非代码替代方案

如果不想写代码,可直接在Meta Business Suite(对应Instagram/Facebook)后台的「洞察」板块,选择过去一年的时间范围,直接导出CSV格式的帖子数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:45:03