Instagram 数据爬取完整指南:一条命令抓取粉丝数与帖子标签,还能 24 小时无人值守
【免费下载链接】instagram-profilecrawl📝 quickly crawl the information (e.g. followers, tags etc...) of an instagram profile.项目地址: https://gitcode.com/gh_mirrors/inst/instagram-profilecrawl
instagram-profilecrawl 是一个无需登录的 Instagram 数据爬取工具:输入用户名,它就用浏览器模拟访问,把资料、帖子、标签、点赞与评论全部抓取下来,存成结构化 JSON。跑上一周定时任务,你还能直接拿到粉丝增长曲线的数据表。
你会拿到什么
跑一次命令,项目目录下会多出三类产出物:
| 产出物 | 位置 | 内容 |
|---|---|---|
| 资料 JSON | profiles/{用户名}.json | 粉丝数、关注数、帖子数,以及每篇帖子的文案、发布时间、图片链接、地点、标签、点赞数、评论 |
| 评论者名单 | profiles/{用户名}_commenters.txt | 所有评论过的用户,按评论频率排序 |
| 增长报表 | stats.csv | 每次运行的时间戳、粉丝数、关注数、帖子数、总点赞、总评论 |
粉丝数 1950、帖子 127 篇的账号,JSON 里大致长这样:
{ "username": "grossertim", "num_of_posts": 127, "followers": 1950, "following": 310, "posts": [ { "caption": "It was a good day", "date": "2018-04-26T15:07:32.000Z", "tags": ["#fun", "#good", "#goodday", "#happy"], "likes": 284, "comments": {"count": 0, "list": []} } ] }所有字段都是结构化数据,可以直接喂给 pandas、Excel 或任何报表工具。
三步完成首次 Instagram 资料爬取
第 1 步:克隆并安装依赖
git clone https://gitcode.com/gh_mirrors/inst/instagram-profilecrawl cd instagram-profilecrawl pip install -r requirements.txt依赖里核心是selenium(用真实浏览器驱动页面)和requests,装完即可。
第 2 步:放入浏览器驱动
工具靠 Chromedriver 驱动 Chrome。从 Chromedriver 官方渠道下载与你 Chrome 版本匹配的版本,把可执行文件放进项目根目录的assets/文件夹即可。项目里的scripts/unix.sh和scripts/windows.ps1是现成的环境准备脚本,可以参考它们自动下载并摆放驱动。
第 3 步:运行爬取
python3 crawl_profile.py instagram也支持一次传多个账号:
python3 crawl_profile.py user1 user2 user3看到终端打印Finished. The json file and nicknames ... saved in profiles directory就说明成功了,打开profiles/instagram.json核对数据即可。
到这里,你已经能手动抓取任意公开账号的全部资料。
原理速览:三类文件串起整条链路
工具的结构很轻,理解三类文件就够:
| 角色 | 文件 | 职责 |
|---|---|---|
| 调度入口 | crawl_profile.py | 读取命令行用户名,启动浏览器,逐个账号提取并落盘 |
| 参数中心 | util/settings.py | 一个Settings类集中控制爬取规模、间隔、输出开关 |
| 数据输出 | util/datasaver.py | 把提取结果写成 JSON 和评论者文本 |
流程是单向的:命令行传入用户名 → Selenium 打开账号主页 →util/extractor.py与util/extractor_posts.py分别提取资料页和帖子详情 → 写入profiles/。后续想深入后端逻辑,读这两个 extractor 文件收益最大。
场景一:用 crontab 自动产出粉丝增长报表
stats.csv每行记录的字段是:时间戳、用户名、粉丝数、关注数、帖子数、总点赞、总评论。每天抓一次,数据表自然长成增长曲线。
关键在于两个脚本的执行顺序:先crawl_profile.py,再log_stats.py。统计脚本会把处理完的资料 JSON 移进profiles/done/,避免同一份数据被重复计入。
编辑定时任务:
crontab -e加入两行,3 点爬取,3 点 05 分统计:
0 3 * * * cd /path/to/instagram-profilecrawl && python3 crawl_profile.py competitor_a >> crawl_log.txt 2>&1 5 3 * * * cd /path/to/instagram-profilecrawl && python3 log_stats.py -u competitor_a >> stats_log.txt 2>&1log_stats.py -u 用户名:只统计指定账号;不带参数则统计profiles/下所有账号。
一周后打开stats.csv,第一列到第五列就是时间序列上的粉丝数,画图即可。
场景二:一条命令批量下载帖子图片
JSON 里每篇帖子都有图片链接,想要本地备份素材,无需自己解析:
python3 extract_image.py profiles参数是资料目录路径(默认就是profiles),图片会保存到images/{用户名}/下。脚本自动跳过没有帖子的账号,遇到非 JSON 文件会提示Unsupported file type。
适合做素材归档、或离线分析"哪些帖子配图风格带来了更多互动"。
场景三:在树莓派或无图形界面上跑
默认入口依赖 Chrome,但项目内置了 crawl_profile_pi.py 的树莓派版本(基于 Firefox + 虚拟显示),无桌面环境也能运行:
sudo apt-get install firefox-esr sudo pip3 install pyvirtualdisplay python3 crawl_profile_pi.py target_user它通过pyvirtualdisplay(虚拟屏幕)驱动 Firefox,其余产出与主入口一致。跑在 24 小时通电的小主机上,就是现成的无人值守采集节点。
进阶:util/settings.py 里值得动的 5 个开关
所有可调项集中在util/settings.py的Settings类,改默认值,或在运行前给Settings重新赋值即可,无需动源码:
| 开关 | 默认值 | 作用 |
|---|---|---|
limit_amount | 1000 | 每个账号最多分析的帖子数,大号可调大 |
sleep_time_between_post_scroll | 14.5 | 帖子滚动间隔(秒),弱网或被风控时调大 |
scrape_posts_likers | False | 额外抓取每篇帖子的点赞用户名单,耗时很长 |
scrape_follower | False | 抓取关注者列表,必须登录且账号已关注目标 |
output_comments | False | 把完整评论内容写进 JSON |
登录属于可选功能:把.env.example复制为.env,填入IG_USERNAME和IG_PASSWORD,工具会自动登录。登录后还能访问你已关注的私密账号。模板脚本quickstart_templates/crawl_profile_with_login.py演示了完整的登录写法;想只抓资料不抓帖子,可参考crawl_profile_without_posts.py。
提醒:登录和拉取关注者都请用小号并控制频率,scrape_posts_likers每批只加载 12 个用户,开启后整体耗时会显著增加。
排错:遇到这几种现象怎么处理
- 启动即报驱动相关异常→ Chromedriver 缺失或与 Chrome 版本不匹配。重新下载匹配版本放入
assets/;树莓派用户改走crawl_profile_pi.py路线,并确认 geckodriver 已就位。 - 爬取中途失败、长时间无响应→ 多为滚动间隔太短触发风控或网络超时。把
sleep_time_between_post_scroll从 14.5 逐步加到 25 再试。 - 登录后仍抓不到关注者→ 确认
Settings.scrape_follower = True,且登录账号确实已关注目标;超大账号上该功能本身也不稳定,可重试。 - stats.csv 里没有新数据→
log_stats.py必须在爬取完成后执行,且只处理profiles/下未归档的 JSON;检查是否漏跑或顺序反了。
深入阅读与模板
quickstart_templates/下有 5 个可直接改的模板:登录版、树莓派版、只抓粉丝、只抓资料不抓帖子、以及纯数据解析脚本parse_instagram.py,适合把爬取逻辑嵌进自己的项目。util/extractor.py、util/extractor_posts.py是字段提取的核心,想知道 JSON 里每个字段怎么来的,从这里读起。util/instalogger.py控制日志行为,Settings.log_output_tofile为True时日志写入logs/。
下一步
- 今天就跑通第一条
python3 crawl_profile.py 任意账号,确认profiles/下生成了 JSON。 - 配置上面那两条 crontab,一周后打开
stats.csv画出第一张粉丝增长曲线——数据底座就位,剩下的交给你的分析工具。
【免费下载链接】instagram-profilecrawl📝 quickly crawl the information (e.g. followers, tags etc...) of an instagram profile.项目地址: https://gitcode.com/gh_mirrors/inst/instagram-profilecrawl
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考