欢迎光临
我们一直在努力

基于 Bright Data Web Scraping 获取 Instagram、TikTok Web Data:搭建海外 KOL 筛选体系指南

前言

Instagram、TikTok是出海品牌网红营销的核心阵地,但国内主流数据分析工具仅覆盖本土平台,海外订阅工具定价高、数据滞后且无法自定义筛选,不少品牌因网红数据注水遭遇投放翻车。

本文基于Bright Data Web Scraper API,结合Python搭建全流程海外KOL数据采集、清洗、评分体系,从痛点梳理、架构设计、环境配置到代码实战、成本对比完整落地,附带可直接运行的案例代码与数据样本,帮助出海团队低成本获取真实实时的海外网红数据,搭建专属营销情报链路。

一、行业痛点:海外网红投放,数据工具成为最大短板

不少出海品牌都遇到过类似问题:花费高额预算签约Instagram、TikTok网红带货,前期参考第三方或商用工具数据,认定博主粉丝量大、互动表现优秀,最终转化效果却远低于预期。复盘后发现,网红粉丝、点赞、评论等核心数据存在刷量造假,粉丝地域、活跃度与品牌目标客群完全不匹配,而团队前期没有可靠渠道核验数据真实性。

当下海内外主流KOL工具,在出海场景中均存在明显短板,下表为各类工具综合对比:

工具类型月度费用覆盖平台数据时效性核心局限
飞瓜数据 999-3999元/月 抖音、快手、B站、小红书 当日更新 无Instagram、TikTok海外版数据,无法用于出海
新榜 1500-5000元/月 微信、微博、抖音 当日更新 聚焦国内生态,海外社媒数据空白
卡思数据 2000元起/月 抖音、快手、B站 当日更新 仅支持国内平台,不覆盖海外主流社媒
蝉妈妈 299-1999元/月 抖音、国内TikTok 当日更新 海外TikTok数据不全,字段固定不可自定义
HypeAuditor 99-399美元/月 Instagram、TikTok、YouTube 月度更新 收费高、更新慢,筛选维度固定,无中文界面
自建方案(Bright Data) 按用量计费 全海外社媒,支持自定义 实时更新 需前期简单配置,无固定月租

国内数据工具仅适配本土短视频平台,无法抓取 Instagram、TikTok 海外博主数据;海外付费工具虽覆盖平台广,但订阅费用高、数据更新滞后、筛选维度固定,难以实现精细化 KOL 筛选。

而基于 Bright Data API 自建采集方案,能完美解决以上痛点。依托其合规代理网络、成熟防爬体系与标准化社媒爬虫接口,出海团队可实时、稳定、低成本批量采集海外网红真实公开数据,是海外 KOL 营销数据获取的最优方案。

二、整体技术架构设计

整套系统采用模块化分层设计,链路清晰、便于维护和功能拓展,整体流程:

Bright Data Instagram/TikTok Scraper API → 原始数据接收 → 数据清洗标准化 → KOL加权评分模型 → 报表导出/数据存储

1、各模块作用

  • 数据采集层:调用Bright Data官方API,批量获取网红基础信息、粉丝、流量、互动、涨粉等原始数据,依托 Bright Data 的代理基础设施、IP 轮换和自动化解锁能力,提高公开网页数据采集稳定性。

  • 数据清洗层:处理API返回的JSON原始数据,完成去重、空值过滤、字段标准化、异常值剔除,输出规整的结构化数据。

  • 评分模型层:结合出海营销需求搭建加权评分体系,量化KOL综合价值,自动识别刷量账号、完成排名筛选。

  • 报告输出层:将最终数据导出为CSV、Excel格式,支持本地存储与团队协同使用。

  • 2、核心采集字段

    结合网红带货、品牌种草的评估需求,预设两类平台核心采集字段,均可在API中自由配置:

    • Instagram:博主昵称、主页信息、粉丝总量、粉丝地域、平均点赞/评论、互动率、作品发布频率

    • TikTok:创作者ID、总粉丝数、视频平均播放量、日均涨粉、点赞率、直播观看人数、内容垂类

    三、前置准备工作(环境、账号、配置)

    在正式编写代码采集数据前,需要完成账号注册、Python环境部署、接口密钥配置三大前置工作,全流程无复杂运维操作,普通技术运营、初级开发均可完成。

    1、Bright Data 账号注册与权限开通

    1、注册 Bright Data 官网 另外在设置-用户管理界面还有促销代码折扣码是"mao20",可以免费获取20$

    在这里插入图片描述

    2、进入控制台,查看 Instagram Scraper API 与 TikTok Scraper API

    在这里插入图片描述

    3、 获取 API Token

    文中API Key 均使用占位符 YOUR_BRIGHTDATA_API_KEY

    在这里插入图片描述

    2、Python 环境部署

    本次代码基于Python 3.8及以上版本开发,依赖requests(接口请求)、pandas(数据处理)、python-dotenv(环境变量管理)三大主流库,部署步骤如下:

  • 本地安装Python 3.8+,配置系统环境变量,打开终端验证版本:python –version。

  • 使用pip安装依赖库,执行以下命令:

    pip install requests pandas python-dotenv

  • 四、三步完成数据采集、建模、筛选(核心代码+案例)

    本章节为全文核心实战部分,分为Instagram数据采集、TikTok数据采集、KOL评分模型与智能筛选三大步骤,每一段代码均附带详细注释、功能说明、运行效果,同时附上脱敏后的真实数据输出案例。所有代码均可直接部署运行,适配2026年最新版Bright Data API规则。

    注:代码中dataset_id,根据 Bright Data 控制台中的对应 Scraper API / Dataset ID 配置,Authorization需要从设置中心获取。

    1、Python 批量采集 Instagram 网红数据

    脚本文件:instagram_profile_scraper.py,核心功能:批量读取网红主页链接,调用Bright Data API采集博主基础信息、粉丝、互动、内容数据,完成基础清洗后输出CSV文件。

    (1)完整代码

    import requests
    import json
    import csv

    headers = {
    "Authorization": "Bearer YOUR_BRIGHTDATA_API_KEY ",
    "Content-Type": "application/json",
    }

    data = json.dumps({
    "input": [
    {"url":"https://www.instagram.com/cats_of_world_/"},
    {"url":"https://www.instagram.com/dogsofinstagram/"},
    {"url":"https://www.instagram.com/zoobarcelona"},
    {"url":"https://www.instagram.com/australiazoo"}
    ],
    })

    response = requests.post(
    "https://api.brightdata.com/datasets/v3/scrape?dataset_id=YOUR_DATASET_ID&notify=false&include_errors=true",
    headers=headers,
    data=data
    )

    print(f"Status Code: {response.status_code}")

    if response.status_code == 200:
    # 1. 解析 NDJSON 格式数据
    parsed_data = []
    for line in response.text.strip().split('\\n'):
    if not line:
    continue
    try:
    parsed_data.append(json.loads(line))
    except json.JSONDecodeError:
    print(f"JSON 解析错误,跳过该行: {line[:50]}…")

    # 2. 基础清洗与提取字段
    cleaned_data = []
    for item in parsed_data:
    # 处理可能存在的空值,并清理简介中的换行符以防止 CSV 格式错误
    biography = str(item.get("biography", item.get("about", ""))).replace('\\n', ' ').replace('\\r', '')

    row = {
    "账号ID": item.get("username", item.get("account_id", "")), # 账号ID/用户名
    "昵称": item.get("full_name", item.get("name", "")), # 昵称/全名
    "简介": biography, # 简介
    "粉丝数": item.get("followers", item.get("followers_count", 0)), # 粉丝数
    "关注数": item.get("following", item.get("following_count", 0)), # 关注数
    "帖子数": item.get("posts_count", item.get("videos_count", 0)), # 帖子数
    "是否认证": item.get("is_verified", False), # 是否认证
    "平均互动率": item.get("engagement_rate", item.get("awg_engagement_rate", "")), # 平均互动率
    "主页链接": item.get("url", "") # 主页链接
    }
    cleaned_data.append(row)

    # 3. 导出到 CSV 文件
    csv_filename = "instagram_profiles.csv"
    if cleaned_data:
    fieldnames = list(cleaned_data[0].keys())
    try:
    # utf-8-sig 编码保证在 Excel 中打开不会中文乱码
    with open(csv_filename, mode='w', encoding='utf-8-sig', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(cleaned_data)
    print(f"成功导出 {len(cleaned_data)} 条数据到 {csv_filename}")
    except IOError as e:
    print(f"写入 CSV 失败: {e}")
    else:
    print("未提取到有效数据")
    else:
    print("请求失败,响应内容:", response.text[:1000])

    (2)运行说明与脱敏数据样本

    1、 确认采集的instagram账号主页。

    2、 终端执行命令:python instagram_profile_scraper.py,脚本自动批量采集并输出instagram_raw_data.csv

    3、 脱敏数据输出样本:

    在这里插入图片描述

    从样本可直观看到,脚本成功提取核心运营指标,互动率、粉丝等字段可直接用于KOL初步筛选。

    2、Python 批量采集 TikTok 海外创作者数据

    脚本文件:tiktok_creator_scraper.py,逻辑与Instagram采集脚本一致,重点采集播放量、涨粉速度、直播数据等TikTok核心指标。

    (1)完整代码

    import requests
    import json
    import csv

    headers = {
    "Authorization": "Bearer YOUR_BRIGHTDATA_API_KEY ",
    "Content-Type": "application/json",
    }

    data = json.dumps({
    "input": [
    {"url":"https://www.tiktok.com/@fofimdmell","country":""},
    {"url":"https://www.tiktok.com/@s_o_h_e_l_46","country":""}
    ],
    })

    response = requests.post(
    "https://api.brightdata.com/datasets/v3/scrape?dataset_id=YOUR_DATASET_ID&notify=false&include_errors=true",
    headers=headers,
    data=data
    )

    print(f"Status Code: {response.status_code}")

    if response.status_code == 200:
    # 1. 解析 NDJSON 格式数据
    parsed_data = []
    for line in response.text.strip().split('\\n'):
    if not line:
    continue
    try:
    parsed_data.append(json.loads(line))
    except json.JSONDecodeError:
    print(f"JSON 解析错误,跳过该行: {line[:50]}…")

    # 2. 基础清洗与提取字段
    cleaned_data = []
    for item in parsed_data:
    # 处理可能存在的空值,并清理简介中的换行符以防止 CSV 格式错误
    biography = str(item.get("biography", "")).replace('\\n', ' ').replace('\\r', '')

    # 提取并计算额外的数据指标
    top_videos = item.get("top_videos", [])
    total_plays = sum(v.get("playcount", 0) for v in top_videos)
    avg_plays = total_plays / len(top_videos) if top_videos else 0

    row = {
    "账号ID": item.get("account_id", ""), # 账号ID/用户名
    "昵称": item.get("nickname", ""), # 昵称
    "简介": biography, # 简介
    "粉丝数": item.get("followers", 0), # 粉丝数
    "关注数": item.get("following", 0), # 关注数
    "总点赞数": item.get("likes", item.get("like_count", 0)), # 总点赞数
    "视频数": item.get("videos_count", 0), # 视频/内容数
    "是否认证": item.get("is_verified", False), # 是否认证
    "平均互动率": item.get("awg_engagement_rate", ""), # 平均互动率
    "近期总播放量": total_plays, # top_videos 的播放量之和
    "近期平均播放": round(avg_plays, 2), # top_videos 的平均播放量
    "直播数据": "暂无/未开播", # 接口当前未直接提供直播数据字段
    "涨粉速度": "需历史数据对比", # 接口为实时快照,无法直接计算涨粉速度
    "主页链接": item.get("url", "") # 主页链接
    }
    cleaned_data.append(row)

    # 3. 导出到 CSV 文件
    csv_filename = "tiktok_profiles.csv"
    if cleaned_data:
    fieldnames = list(cleaned_data[0].keys())
    try:
    # utf-8-sig 编码保证在 Excel 中打开不会中文乱码
    with open(csv_filename, mode='w', encoding='utf-8-sig', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(cleaned_data)
    print(f"成功导出 {len(cleaned_data)} 条数据到 {csv_filename}")
    except IOError as e:
    print(f"写入 CSV 失败: {e}")
    else:
    print("未提取到有效数据")
    else:
    print("请求失败,响应内容:", response.text[:1000])

    (2)运行说明与脱敏数据样本

    执行命令:python tiktok_creator_scraper.py,输出tiktok_raw_data.csv。

    脱敏数据输出样本:

    在这里插入图片描述

    3、搭建自定义KOL评分模型,实现智能筛选与排名

    采集到原始数据后,最核心的业务环节是量化评估KOL价值,区分优质账号、普通账号、刷量低质账号。我们参考社媒营销行业通用评估体系,结合加权算法搭建KOL评分模型,脚本文件:kol_scoring_model.py。

    (1)评分模型设计思路

    结合Instagram、TikTok平台特性与出海带货场景,拆分5大核心评分维度,设置可自定义权重(品牌可根据赛道调整权重),总分100分:

    1、互动率评分(权重 40%):评估“活粉/死粉”的最核心指标。> 10% 给 40 分;> 5% 给 30 分;< 1% 直接 0 分(高度涉嫌刷量)。

    2、粉丝量级评分(权重 30%):评估曝光基础。百万级给 30 分;十万级给 20 分;万粉以上给 10 分。

    3、近期均播能力(权重 20%):考核实际爆款潜力与近期流量获取能力。均播 > 10w 给 20 分;> 1w 给 15 分。

    4、账号活跃与权威性(权重 10%):如果是官方认证 (is_verified) 直接给 10 分,内容数量多于 50 条给 5 分。

    账号评级定性,根据算法自动生成综合评分并得出账号评级:

    S 级(优质账号):评分>=80

    A 级(良好账号):评分 >=60

    B 级(普通账号):评分 >=40

    C 级(低质/涉嫌刷量):评分 < 40

    (2)评分模型完整代码

    import requests
    import json
    import csv

    headers = {
    "Authorization": "Bearer YOUR_BRIGHTDATA_API_KEY ",
    "Content-Type": "application/json",
    }

    data = json.dumps({
    "input": [
    {"url":"https://www.tiktok.com/@fofimdmell","country":""},
    {"url":"https://www.tiktok.com/@s_o_h_e_l_46","country":""}
    ],
    })

    response = requests.post(
    "https://api.brightdata.com/datasets/v3/scrape?dataset_id=YOUR_DATASET_ID&notify=false&include_errors=true",
    headers=headers,
    data=data
    )

    print(f"Status Code: {response.status_code}")

    if response.status_code == 200:
    # 1. 解析 NDJSON 格式数据
    parsed_data = []
    for line in response.text.strip().split('\\n'):
    if not line:
    continue
    try:
    parsed_data.append(json.loads(line))
    except json.JSONDecodeError:
    print(f"JSON 解析错误,跳过该行: {line[:50]}…")

    # 2. 基础清洗、提取字段与 KOL 评分模型
    cleaned_data = []
    for item in parsed_data:
    # 处理可能存在的空值,并清理简介中的换行符以防止 CSV 格式错误
    biography = str(item.get("biography", "")).replace('\\n', ' ').replace('\\r', '')

    # 获取基础数据
    followers = item.get("followers", 0)
    likes = item.get("likes", item.get("like_count", 0))
    videos_count = item.get("videos_count", 0)
    engagement_rate = item.get("awg_engagement_rate", 0)
    if not isinstance(engagement_rate, (int, float)):
    engagement_rate = 0

    top_videos = item.get("top_videos", [])
    total_plays = sum(v.get("playcount", 0) for v in top_videos)
    avg_plays = total_plays / len(top_videos) if top_videos else 0

    # ==========================================
    # KOL 核心评分算法模型 (满分 100分)
    # ==========================================
    score = 0

    # 1. 粉丝量级评分 (权重 30%)
    # >100w: 30分 | >10w: 20分 | >1w: 10分 | 其它: 5分
    if followers > 1000000:
    score += 30
    elif followers > 100000:
    score += 20
    elif followers > 10000:
    score += 10
    elif followers > 0:
    score += 5

    # 2. 互动率评分 (权重 40%) – 最核心指标,判断死粉/活粉
    # >10%: 40分 | >5%: 30分 | >2%: 15分 | <1%: 0分 (涉嫌刷量)
    if engagement_rate > 0.10:
    score += 40
    elif engagement_rate > 0.05:
    score += 30
    elif engagement_rate > 0.02:
    score += 15
    elif engagement_rate < 0.01:
    score += 0 # 可能存在大量死粉或刷量
    else:
    score += 5

    # 3. 爆款视频能力 (权重 20%) – 考核均播数据
    # 均播 > 10w: 20分 | > 1w: 15分 | > 1000: 5分 | 其它: 0分
    if avg_plays > 100000:
    score += 20
    elif avg_plays > 10000:
    score += 15
    elif avg_plays > 1000:
    score += 5

    # 4. 账号活跃度及认证加分 (权重 10%)
    # 官方认证给满 10分,无认证但视频数>50给 5分
    if item.get("is_verified", False):
    score += 10
    elif videos_count > 50:
    score += 5

    # ==========================================
    # 账号评级定性
    # ==========================================
    if score >= 80:
    kol_level = "优质账号 (S级)"
    elif score >= 60:
    kol_level = "良好账号 (A级)"
    elif score >= 40:
    kol_level = "普通账号 (B级)"
    else:
    kol_level = "低质/涉嫌刷量账号 (C级)"

    row = {
    "账号ID": item.get("account_id", ""), # 账号ID/用户名
    "昵称": item.get("nickname", ""), # 昵称
    "简介": biography, # 简介
    "粉丝数": followers, # 粉丝数
    "总点赞数": likes, # 总点赞数
    "视频数": videos_count, # 视频/内容数
    "是否认证": item.get("is_verified", False), # 是否认证
    "平均互动率": round(engagement_rate, 4), # 平均互动率
    "近期平均播放": round(avg_plays, 2), # top_videos 的平均播放量
    "综合评分 (满分100)": score, # KOL商业价值评分
    "账号评级": kol_level, # 账号等级评定
    "主页链接": item.get("url", "") # 主页链接
    }
    cleaned_data.append(row)

    # 3. 导出到 CSV 文件
    csv_filename = "kol_scoring_model.csv"
    if cleaned_data:
    fieldnames = list(cleaned_data[0].keys())
    try:
    # utf-8-sig 编码保证在 Excel 中打开不会中文乱码
    with open(csv_filename, mode='w', encoding='utf-8-sig', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(cleaned_data)
    print(f"成功导出 {len(cleaned_data)} 条数据到 {csv_filename}")
    except IOError as e:
    print(f"写入 CSV 失败: {e}")
    else:
    print("未提取到有效数据")
    else:
    print("请求失败,响应内容:", response.text[:1000])

    (3)评分排名输出样本

    在这里插入图片描述

    这两位网红的互动率均低于 1%(0.007 和 0.0087),因此在互动率方面获得了 0 分;再结合各自的粉丝数、平均播放量、活跃度指标,综合得分分别为 5 分和 10 分,因此被系统准确标记为了 “低质/涉嫌刷量账号 (C级)”。

    六、成本分析:自建方案 vs 传统订阅工具

    我们以每月采集10000条海外KOL数据为标准,对比自建Bright Data方案与主流海外订阅工具的综合成本,量化体现成本优势:

    1、成本对比表

    方案月度固定费用10000条数据额外成本月度综合成本数据时效性自定义能力
    HypeAuditor(基础版) 99美元(约710元) 无额外费用 约710元 月度更新 字段固定,无法自定义
    HypeAuditor(高级版) 399美元(约2850元) 无额外费用 约2850元 月度更新 有限筛选,无字段定制
    自建(Bright Data) 0固定月费 10000条≈400-600元 400-600元 实时更新 全字段自定义,模型可调整

    2、成本总结

  • 中小团队(月采集1万条以内):自建方案综合成本低于HypeAuditor基础版,且无固定月租,闲置时段零成本,性价比优势明显;

  • 中大型团队(月采集5万+条):Bright Data量大优惠,单位采集成本持续下降,对比高价海外订阅工具可节省50%以上费用;

  • 隐性成本:传统工具数据滞后、筛选受限,会带来投放失误、人工二次整理等隐性成本;自建方案实时数据+自定义模型,大幅降低人工成本与投放风险。

  • 同时对比国内飞瓜、蝉妈妈等工具,这类工具无法覆盖海外平台,不存在替代可能,Bright Data 提供了一套适合企业级海外数据采集的可扩展方案

    七、总结

    海外社媒网红营销已是出海品牌核心增长方式,但行业普遍存在数据造假、工具适配差、采购成本高的问题。国内 KOL 工具仅支持抖音、小红书等本土平台,无法覆盖 Instagram、TikTok 海外场景;海外付费工具价格昂贵、数据更新滞后、无法自定义筛选,难以支撑精细化投放。

    借助 Bright Data Web Scraper API + Python 自建采集方案,可依托其合规代理网络、企业级防爬能力和标准化爬虫接口,实现实时采集、自定义字段、智能筛号、低成本运维,完全替代飞瓜、HypeAuditor 等工具,快速搭建专属海外 KOL 数据链路。

    这套方案可有效识别注水账号、规避投放风险、精准筛选高性价比网红,显著提升出海营销 ROI,适用于出海电商、DTC 品牌与跨境 MCN 机构。

    落地建议

  • 注册 Bright Data 中文官网,领取免费额度测试接口;

  • 部署项目代码,小批量测试数据准确性;

  • 根据品类微调评分权重与筛选阈值;

  • 分区域采集多国网红数据,搭建专属海外 KOL 资源池。

  • 本文demo:https://github.com/zbsguilai/instagram_tiktok_scraper

    赞(0)
    未经允许不得转载:171主机测评 » 基于 Bright Data Web Scraping 获取 Instagram、TikTok Web Data:搭建海外 KOL 筛选体系指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址