ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

树莓派部署爬虫完整手记:从一块板子到24小时自动采集Instagram数据

树莓派部署爬虫完整手记:从一块板子到24小时自动采集Instagram数据 树莓派部署爬虫完整手记从一块板子到24小时自动采集Instagram数据【免费下载链接】instagram-profilecrawl quickly crawl the information (e.g. followers, tags etc...) of an instagram profile.项目地址: https://gitcode.com/gh_mirrors/inst/instagram-profilecrawl深夜两点我盯着笔记本屏幕上那个正在爬取 Instagram 数据的脚本想起白天刚在crawl_profile_pi.py上栽的跟头——这台树莓派让我重新理解了什么叫为一块 ARM 板子写代码。如果你也有一台吃灰的树莓派想让它替你盯着某个账号的粉丝变化、标签趋势这篇文章就是我的踩坑实录。一、为什么非要在树莓派上跑爬虫一个真实痛点 事情起源于一个运营需求我需要持续跟踪 5 个竞品账号的粉丝数、点赞数和评论区高频用户。手动去翻 Instagram 不现实找第三方数据平台又太贵。最合理的方案是把采集任务扔给一台 7×24 小时开机的设备让它自己跑。我先后考虑过三条路云服务器跑定时任务方案成熟但要钱还要操心服务器安全。本地笔记本常开功耗高、占资源晚上合盖就断了。树莓派功耗低、能 7×24 小时挂机、性能恰好够跑一个浏览器自动化脚本。最终选择instagram-profilecrawl这个项目理由有三个它默认无需登录就能抓取公开资料粉丝数、关注数、帖子数、标签、评论用户等输出是规整的 JSON还专门提供了树莓派版本入口crawl_profile_pi.py。这几乎是为无人值守量身定做的——它通过 Selenium 驱动浏览器模拟真人滚动页面来采集数据正好踩在树莓派能承受的性能边界内。二、环境准备的避坑实录三个差点劝退我的坑 ️真正的坑不是装依赖而是浏览器驱动这件事。这是整个部署里最容易让人摔跟头的地方。坑 1树莓派上默认跑的其实是 Firefox项目主力脚本crawl_profile.py走的是 Chrome chromedriver 路线但在树莓派ARM 架构上Chrome 驱动经常版本对不上。项目里专门为树莓派留了quickstart_templates/crawl_profile_pi.py它走的是Firefox geckodriver路线脚本顶部就是webdriver.Firefox()。我第一反应是直接用普通脚本不行吗结果 chromedriver 版本校验直接报错——项目里util/chromedriver.py会对驱动做最低版本检查。所以别犹豫树莓派就用树莓派专用的那套。坑 2没有显示器浏览器照样能看树莓派通常是无头运行不接显示器但 Selenium 驱动浏览器时依然需要一块虚拟屏幕。项目用的方案是pyvirtualdisplaysudo pip3 install pyvirtualdisplaycrawl_profile_pi.py里这两行就是干这个的display Display(visible0, size(1024, 768)) display.start()一个 1024×768 的虚拟屏幕足够 Instagram 网页渲染出完整布局。这是树莓派部署爬虫的必备前置少了它 Firefox 起不来。坑 3依赖版本和网络都要提前排雷requirements.txt里是selenium3.141.0、requests、python-dotenv、webdriver_manager等。安装本身不难pip install -r requirements.txt真正要提醒的是树莓派最好插网线而不是蹭 WiFi无线信号抖动会导致浏览器加载超时爬虫就会在那等页面。另外旧版 Selenium 的 find 元素 API 和现在的新版本有差异所以别手贱升级 selenium 版本锁定 requirements 里的版本最省心。三、核心部署的关键三步从克隆到跑出第一份 JSON 第一步克隆仓库并配置环境变量git clone https://gitcode.com/gh_mirrors/inst/instagram-profilecrawl cd instagram-profilecrawl pip install -r requirements.txt项目默认不需要登录所以.env里的IG_USERNAME、IG_PASSWORD可以留空。但建议先创建.env文件因为util/settings.py会读取它——不建这个文件脚本也能跑只是登录相关配置会走空值。cp .env.example .env第二步装好 Firefox 与 geckodriver 这对搭档这一步是树莓派部署爬虫里最容易出错的地方关键动作就两个sudo apt-get install firefox-esr然后下载树莓派 ARM 版 geckodriver注意要选linux-arm后缀的包解压后放到PATH里。装好后务必验证版本是否匹配geckodriver --version firefox --version版本不匹配是报WebDriverException的头号原因日志里会明确提示驱动路径找不到别慌多半就是 geckodriver 没放对位置。第三步跑通第一次采集理解关键参数树莓派专用脚本入口在quickstart_templates/crawl_profile_pi.py。先把它复制到项目根目录或者直接用你习惯的方式运行然后python3 crawl_profile_pi.py 目标用户名跑完后数据会落到profiles/目标用户名.json里面包含粉丝数、关注数、每篇帖子的 caption、位置、图片链接、点赞数、评论列表还有一个用户名_commenters.txt记录评论过的用户并按频率排序。这里必须提一下util/settings.py里几个直接影响采集节奏的开关它们决定了脚本会不会被 Instagram 反爬参数默认值说明limit_amount1000单次最多分析的帖子数想全量采集可调大scrape_posts_likersFalse是否爬取点赞用户默认关开启会非常耗时scrape_followerFalse是否爬取粉丝列表默认关需登录且大账号易崩sleep_time_between_post_scroll14.5滚动帖子间隔秒数被限流就调大⚠️ 合规提醒scrape_follower和登录功能属于敏感操作爬取粉丝列表需要你的账号登录且对超大规模账号容易触发风控。非必要不建议开启遵循 Instagram 使用条款控制采集频率。四、无人值守运维体系让树莓派自己打工 24 小时 脚本能跑只是第一步真正的价值在于我不管它它自己天天跑。这一步要把采集、统计、留档串成一条流水线。用 crontab 撑起自动采集crontab -e添加每天凌晨 3 点自动采集并把输出追加到日志文件0 3 * * * cd /home/pi/instagram-profilecrawl python3 crawl_profile_pi.py 目标用户名 crawl_log.txt 21注意两点cd到项目目录是必须的因为脚本里大量路径都是相对BASE_DIR计算的21把报错也写进日志不然出错你根本不知道。用 log_stats.py 沉淀增长曲线项目里藏着一个低调但很实用的log_stats.py它读取profiles/下最新的 JSON把时间、粉丝数、关注数、帖子数、点赞数、评论数追加写进stats.csv然后把处理过的 JSON 挪进profiles/done/。python3 log_stats.py -u 目标用户名指定用户就只统计该用户不加参数则处理所有用户。它必须在爬虫跑完之后再执行留几分钟间隔这样每天凌晨就有两条定时任务0 3 * * * cd /home/pi/instagram-profilecrawl python3 crawl_profile_pi.py 目标用户名 crawl_log.txt 21 5 3 * * * cd /home/pi/instagram-profilecrawl python3 log_stats.py -u 目标用户名 stats_log.txt 21连续跑几周stats.csv就是一张天然的粉丝增长趋势表用任何表格软件打开就能画折线图。这就是树莓派部署爬虫实现 24 小时自动采集的长期收益——你睡大觉数据替你记账。查看历史数据的姿势每个账号每天一份带时间戳的 JSONprofile_file_with_timestamp默认开启文件名会带日期想看哪天的数据直接cat profiles/目标用户名_2026-08-15*.json | jq .log_stats.py会把处理完的 JSON 移入done/文件夹避免重复统计这点很贴心。五、效果复盘与扩展玩法一块板子的更多可能 实测效果与提醒我的 5 个目标账号跑了三周每天凌晨 3 点自动采集最长的账号一次跑了约 20 分钟日志里偶尔出现Error with user字样——脚本对单个用户失败会跳过继续下一个不会整体崩掉这点设计得很稳。几个经验总结限流是常态遇到频繁失败先调大sleep_time_between_post_scroll别急着开代理。定期备份profiles/目录是全部心血建议每周打包一次防止 SD 卡损坏数据全丢。别高频登录登录会触发验证码流程util/account.py里甚至写了send_security_code的处理逻辑非必要保持免登录运行。三个进阶玩法跑个词云分析标签profiles/*.json里每篇帖子都有tags字段把一段时间内的标签频率统计出来画词云能直观看出目标账号的内容重心——README 里就展示过这种玩法。评论区用户画像用户名_commenters.txt按评论频率排序配合每周数据对比能识别出忠实互动用户这对社区运营很有参考价值。多账号批量采集脚本支持一次性传多个用户名python3 crawl_profile_pi.py userA userB userC配合 crontab 排成周一爬 A、周二爬 B的轮班表一台树莓派就能盯一整片账号矩阵。写在最后 ✍️从一块吃灰的树莓派到一台能 24 小时自动采集的 Instagram 数据哨兵中间隔的其实只是几个容易踩的坑ARM 架构下的浏览器驱动、无头环境下的虚拟屏幕、以及一个把采集和统计串起来的 crontab。instagram-profilecrawl的价值在于它把这些细节都替你处理好了你要做的只是把参数调成自己的节奏。如果你想深挖每个配置项的含义、或者了解extract_image.py怎么把帖子图片批量下载到本地去项目仓库看 README 和util/settings.py的注释那是最权威的说明书。跑起来之后别忘了给你的树莓派配一块好点的 SD 卡——它会陪你很久。【免费下载链接】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),仅供参考
返回列表