求助:如何抓取近一年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
相关产品推荐
相关产品推荐

