网淘吧来吧,欢迎您!

Instagram Scraper

2026-03-30 新闻来源:网淘吧 围观:10
电脑广告
手机广告

Instagram 个人资料抓取工具

一款基于浏览器的 Instagram 个人资料发现与抓取工具。

隶属于ScrapeClaw——一套基于 Python 和 Playwright 构建、无需 API 密钥、可用于生产环境的智能化社交媒体抓取工具套件,支持 Instagram、YouTube、X/Twitter 和 Facebook。

Instagram Scraper

---
name: instagram-scraper
description: Discover and scrape Instagram profiles from your browser.
emoji: 📸
version: 1.0.6
author: influenza
tags:
  - instagram
  - scraping
  - social-media
  - influencer-discovery
metadata:
  clawdbot:
    requires:
      bins:
        - python3
        - chromium

    config:
      stateDirs:
        - data/output
        - data/queue
        - thumbnails
      outputFormats:
        - json
        - csv
---

概述

此技能提供了一个两阶段的 Instagram 抓取系统:

  1. 个人资料发现
  2. 浏览器抓取

功能特性

  • 🔍 - 根据地理位置和类别发现 Instagram 个人资料
  • 🌐 - 完整的浏览器模拟,实现精准抓取
  • 🛡️ - 浏览器指纹伪装、人类行为模拟和隐形脚本
  • 📊 - 个人资料信息、统计数据、图片和互动数据
  • 💾 - JSON/CSV 格式导出,并下载缩略图
  • 🔄 - 恢复中断的抓取会话
  • ⚡ - 自动跳过私密账户、低粉丝数账户和空账户
  • 🌍 - 内置住宅代理支持,集成 4 家服务商

获取谷歌API凭据(可选)

  1. 前往谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 启用"自定义搜索API"
  4. 创建API凭据 → API密钥
  5. 前往可编程搜索引擎
  6. 创建一个搜索引擎,将instagram.com设为要搜索的网站
  7. 复制搜索引擎ID

使用方法

代理工具接口

对于OpenClaw代理集成,该技能提供JSON输出:

# Discover profiles (returns JSON)
discover --location "Miami" --category "fitness" --output json

# Scrape single profile (returns JSON)
scrape --username influencer123 --output json

输出数据

个人资料数据结构

{
  "username": "example_user",
  "full_name": "Example User",
  "bio": "Fashion blogger | NYC",
  "followers": 125000,
  "following": 1500,
  "posts_count": 450,
  "is_verified": false,
  "is_private": false,
  "influencer_tier": "mid",
  "category": "fashion",
  "location": "New York",
  "profile_pic_local": "thumbnails/example_user/profile_abc123.jpg",
  "content_thumbnails": [
    "thumbnails/example_user/content_1_def456.jpg",
    "thumbnails/example_user/content_2_ghi789.jpg"
  ],
  "post_engagement": [
    {"post_url": "https://instagram.com/p/ABC123/", "likes": 5420, "comments": 89}
  ],
  "scrape_timestamp": "2025-02-09T14:30:00"
}

网红层级

层级粉丝数范围
纳米级< 1,000
微型1,000 - 10,000
10,000 - 100,000
宏观100,000 - 1,000,000
超大> 1,000,000

文件输出

  • 队列文件data/queue/{location}_{category}_{timestamp}.json
  • 已抓取数据data/output/{username}.json
  • 缩略图thumbnails/{username}/profile_*.jpgthumbnails/{username}/content_*.jpg
  • 导出文件data/export_{timestamp}.jsondata/export_{timestamp}.csv

配置

编辑config/scraper_config.json:

{
  "proxy": {
    "enabled": false,
    "provider": "brightdata",
    "country": "",
    "sticky": true,
    "sticky_ttl_minutes": 10
  },
  "google_search": {
    "enabled": true,
    "api_key": "",
    "search_engine_id": "",
    "queries_per_location": 3
  },
  "scraper": {
    "headless": false,
    "min_followers": 1000,
    "download_thumbnails": true,
    "max_thumbnails": 6
  },
  "cities": ["New York", "Los Angeles", "Miami", "Chicago"],
  "categories": ["fashion", "beauty", "fitness", "food", "travel", "tech"]
}

已应用的过滤器

采集器会自动过滤掉:

  • ❌ 私人账户
  • ❌ 关注者少于 1,000 的账户(可配置)
  • ❌ 没有帖子的账户
  • ❌ 不存在/已删除的账户
  • ❌ 已采集过的账户(去重)

故障排除

登录问题

  • 确保凭据正确
  • 出现提示时处理验证码
  • 如果遇到速率限制请等待(脚本会自动重试)

未发现个人资料

  • 检查 Google API 密钥和配额
  • 验证搜索引擎 ID 是否已配置为 instagram.com
  • 尝试不同的地点/类别组合

速率限制

  • 降低采集速度(在配置中增加延迟)
  • 在非高峰时段运行
  • 使用住宅代理(见下文)

🌐 支持住宅代理

为何使用住宅代理?

大规模运行爬虫程序如果没有住宅代理,您的IP地址会很快被封锁。以下是代理对于长期运行的爬虫程序至关重要的原因:

优势描述
避免IP封禁住宅IP看起来像真实的家庭用户,而不是数据中心机器人。Instagram 标记它们的可能性要小得多。
自动IP轮换每个请求(或会话)都会获得一个新的IP地址,因此速率限制不会累积在一个地址上。
地理位置定位通过特定国家/城市路由流量,使抓取的内容与目标受众的地区相匹配。
粘性会话在可配置的时间窗口内(例如10分钟)保持相同的IP地址——这对于维持一致的浏览会话至关重要。
更高的成功率与数据中心代理在Instagram上约30%的成功率相比,使用轮换住宅IP可获得95%以上的成功率。
长时间持续抓取可连续数小时或数天抓取数千个用户资料,过程不间断。
并发抓取可同时在不同IP地址上运行多个浏览器实例。

推荐代理服务商

我们与顶尖的住宅代理服务商建立了联盟合作关系。使用以下链接将支持本技能的持续开发:

服务商最佳适用场景注册
Bright Data全球最大网络,拥有7200万+ IP地址,企业级服务👉获取Bright Data
IProyal按需付费,覆盖195+国家/地区,流量无有效期限制👉获取IProyal
Storm Proxies快速可靠,开发者友好的API,具有竞争力的价格👉获取 Storm Proxies
NetNutISP 级网络,5200万+ IP,直连👉获取 NetNut

设置步骤

1. 获取您的代理凭证

使用上方任一提供商注册,然后获取:

  • 用户名(来自您的提供商仪表板)
  • 密码(来自您的提供商仪表板)
  • 主机端口已按提供商预配置(或使用自定义设置)

2. 通过环境变量配置

export PROXY_ENABLED=true
export PROXY_PROVIDER=brightdata    # brightdata | iproyal | stormproxies | netnut | custom
export PROXY_USERNAME=your_user
export PROXY_PASSWORD=your_pass
export PROXY_COUNTRY=us             # optional: two-letter country code
export PROXY_STICKY=true            # optional: keep same IP per session

3. 特定提供商的默认主机/端口

当您设置了提供商名称时,这些会自动配置:

提供商主机端口
Bright Databrd.superproxy.io22225
IProyalproxy.iproyal.com12321
Storm Proxiesrotating.stormproxies.com9999
NetNutgw-resi.netnut.io5959

使用环境变量覆盖PROXY_HOST/PROXY_PORT如果您的方案使用不同的网关。

4. 自定义代理提供商

对于任何其他代理服务,请将提供商设置为custom并手动提供主机/端口:

{
  "proxy": {
    "enabled": true,
    "provider": "custom",
    "host": "your.proxy.host",
    "port": 8080,
    "username": "user",
    "password": "pass"
  }
}

使用代理运行爬虫

配置完成后,爬虫会自动使用代理——无需额外标志:

# Discover and scrape as usual — proxy is applied automatically
python main.py discover --location "Miami" --category "fitness"
python main.py scrape --username influencer123

# The log will confirm proxy is active:
# INFO - Proxy enabled: <ProxyManager provider=brightdata enabled host=brd.superproxy.io:22225>
# INFO - Browser using proxy: brightdata → brd.superproxy.io:22225

以编程方式使用代理管理器

from proxy_manager import ProxyManager

# From config (auto-reads config/scraper_config.json)
pm = ProxyManager.from_config()

# From environment variables
pm = ProxyManager.from_env()

# Manual construction
pm = ProxyManager(
    provider="brightdata",
    username="your_user",
    password="your_pass",
    country="us",
    sticky=True
)

# For Playwright browser context
proxy = pm.get_playwright_proxy()
# → {"server": "http://brd.superproxy.io:22225", "username": "user-country-us-session-abc123", "password": "pass"}

# For requests / aiohttp
proxies = pm.get_requests_proxy()
# → {"http": "http://user:pass@host:port", "https": "http://user:pass@host:port"}

# Force new IP (rotates session ID)
pm.rotate_session()

# Debug info
print(pm.info())

长时间运行爬虫的最佳实践

  1. 使用粘性会话——Instagram要求在浏览会话期间保持IP地址的一致性。请设置"sticky": true
  2. 定位正确的国家——设置"country": "us"(或您的目标区域),以便Instagram提供预期语言环境的内容。
  3. 结合现有的反检测措施——此爬虫已具备指纹识别、隐身脚本和人类行为模拟功能。代理是最后一层防护。
  4. 在批次间轮换会话——在爬取大量用户档案之间,调用pm.rotate_session()以获取新的IP地址。
  5. 使用延迟——即使使用代理,也应遵守配置中的delay_between_profiles设置,避免产生过于频繁的访问模式。
  6. 监控您的代理仪表板— 所有供应商都提供显示带宽使用情况和成功率的仪表板。

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Tmux Agents 下一篇:Business Plan

相关文章

您是本站第324609名访客 今日有192篇新文章/评论