You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python/Python3下载Instagram帖子数据及公开账号按点赞排序的图片

一、使用Python下载Instagram帖子(含图片、视频)

可以用instagrapi这个第三方库来实现,它封装了Instagram的私有API,操作便捷。

步骤说明:

  1. 先安装依赖:
pip install instagrapi
  1. 编写代码完成下载:
from instagrapi import Client
import os

# 初始化客户端,建议用临时Instagram账号登录(部分公开帖子也需登录才能获取完整数据)
cl = Client()
cl.login("你的IG账号", "你的IG密码")

# 目标帖子的URL或ID
post_url = "https://www.instagram.com/p/xxxxxx/"
post_id = cl.media_pk_from_url(post_url)

# 获取帖子详情
media = cl.media_info(post_id)

# 创建保存目录
save_dir = "instagram_downloads"
os.makedirs(save_dir, exist_ok=True)

# 判断帖子类型并下载
if media.media_type == 1:  # 单图帖子
    img_path = cl.media_download(media.pk, folder=save_dir)
    print(f"图片已保存至: {img_path}")
elif media.media_type == 2:  # 视频帖子
    video_path = cl.media_download(media.pk, folder=save_dir)
    print(f"视频已保存至: {video_path}")
elif media.media_type == 8:  # 多图/多视频帖子
    for i, item in enumerate(media.resources):
        save_path = cl.media_download(item.pk, folder=save_dir)
        if item.media_type == 1:
            print(f"第{i+1}张图片已保存至: {save_path}")
        else:
            print(f"第{i+1}个视频已保存至: {save_path}")

注意事项:

  • 频繁请求会触发Instagram反爬机制,建议添加time.sleep(2)这类间隔
  • 若仅处理完全公开的帖子,可尝试不登录,但部分内容可能无法获取,优先用小号登录
二、从公开Instagram主页按点赞数排序下载图片

核心逻辑是先获取目标主页的所有公开帖子,提取图片的点赞数与下载信息,按点赞数降序排序后批量下载。

代码实现:

from instagrapi import Client
import os
import time

cl = Client()
cl.login("你的IG账号", "你的IG密码")

# 目标公开主页的用户名
target_username = "example_user"
user_id = cl.user_id_from_username(target_username)

# 获取主页所有帖子(max_pages可调整,控制获取的帖子数量)
medias = cl.user_medias(user_id, max_pages=5)

# 筛选图片帖子并收集点赞数信息
image_posts = []
for media in medias:
    if media.media_type == 1:  # 单图帖子
        image_posts.append({
            "like_count": media.like_count,
            "post_pk": media.pk
        })
    elif media.media_type == 8:  # 多图帖子,提取其中的图片项
        for item in media.resources:
            if item.media_type == 1:
                image_posts.append({
                    "like_count": media.like_count,  # 多图帖子的点赞数按主帖统计
                    "post_pk": item.pk
                })

# 按点赞数降序排序
sorted_posts = sorted(image_posts, key=lambda x: x["like_count"], reverse=True)

# 创建保存目录
save_dir = f"{target_username}_sorted_images"
os.makedirs(save_dir, exist_ok=True)

# 下载排序后的图片
for idx, post in enumerate(sorted_posts):
    try:
        raw_path = cl.media_download(post["post_pk"], folder=save_dir)
        # 重命名文件,标注排序序号与点赞数
        new_filename = f"{idx+1}_likes-{post['like_count']}_{os.path.basename(raw_path)}"
        new_path = os.path.join(save_dir, new_filename)
        os.rename(raw_path, new_path)
        print(f"已下载第{idx+1}张({post['like_count']}赞): {new_path}")
        time.sleep(2)  # 添加间隔,避免触发限制
    except Exception as e:
        print(f"下载失败: {str(e)}")

注意事项:

  • 仅能访问公开主页内容,私有主页无法获取数据
  • Instagram限制单账号请求频率,若目标主页帖子过多,建议分批次下载
  • 多图帖子的单图无独立点赞数,只能用主帖总点赞数统计

内容的提问来源于stack exchange,提问作者Harshit Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:05:38