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

如何编写Python脚本从Instagram、Reddit等网站下载表情包至文件夹

Python 实现从Reddit/Instagram下载表情包到指定文件夹

Reddit 表情包下载方案

依赖安装

pip install praw requests

脚本示例

import praw
import requests
import os

# 初始化Reddit API客户端(需替换为自己的开发者信息)
reddit = praw.Reddit(
    client_id="你的client_id",
    client_secret="你的client_secret",
    user_agent="表情包下载工具:v1.0 (by u/你的用户名)"
)

# 配置目标社区和保存路径
target_subreddit = "memes"
save_folder = "./reddit_meme_downloads"

# 创建保存文件夹(不存在则自动创建)
os.makedirs(save_folder, exist_ok=True)

# 遍历社区热门帖子(可替换为new/top等排序方式)
for post in reddit.subreddit(target_subreddit).hot(limit=20):
    # 只处理图片格式的帖子
    if post.url.endswith(('.jpg', '.jpeg', '.png')):
        # 生成保存文件名
        file_name = f"{post.id}{os.path.splitext(post.url)[1]}"
        save_path = os.path.join(save_folder, file_name)
        
        # 下载并保存图片
        img_response = requests.get(post.url)
        with open(save_path, 'wb') as f:
            f.write(img_response.content)
        print(f"已保存: {save_path}")

关键说明

  • 需先在Reddit开发者平台创建应用,获取client_id、client_secret参数
  • limit参数控制下载帖子数量,可按需调整
  • 支持切换hot为new/top,获取不同排序的表情包

Instagram 表情包下载方案

依赖安装

pip install instagrapi

脚本示例

from instagrapi import Client
import os

# 初始化Instagram客户端
cl = Client()
# 使用小号登录(避免主账号风控)
cl.login("你的Ins用户名", "你的Ins密码")

# 配置目标话题/用户和保存路径
target = "memes"  # 支持用户名或话题(无需加#)
save_folder = "./instagram_meme_downloads"

os.makedirs(save_folder, exist_ok=True)

# 爬取话题下的最新帖子(若爬取用户则用user_medias方法)
medias = cl.hashtag_medias_recent(target, amount=20)

for media in medias:
    # 处理单图帖子
    if media.media_type == 1:
        img_url = media.thumbnail_url
        save_path = os.path.join(save_folder, f"{media.pk}.jpg")
        # 利用客户端会话下载图片
        img_response = cl.session.get(img_url)
        with open(save_path, 'wb') as f:
            f.write(img_response.content)
        print(f"已保存: {save_path}")
    # 处理多图帖子(仅下载第一张)
    elif media.media_type == 8:
        img_url = media.resources[0].thumbnail_url
        save_path = os.path.join(save_folder, f"{media.pk}_1.jpg")
        img_response = cl.session.get(img_url)
        with open(save_path, 'wb') as f:
            f.write(img_response.content)
        print(f"已保存多图帖子首图: {save_path}")

# 退出登录
cl.logout()

关键说明

  • 推荐使用闲置小号登录,避免主账号因频繁操作被限制
  • 若遇到登录验证,可调用cl.login_challenge()手动处理验证流程
  • amount参数控制下载数量,Instagram有严格的调用频率限制,建议不要设置过大

通用注意事项

  • 频率限制: 两个平台均有API调用频率限制,短时间内大量请求可能导致IP/账号被封禁
  • 版权合规: 下载的表情包仅可用于个人学习,禁止用于商业用途
  • 路径配置: 可将save_folder替换为绝对路径,确保文件保存到指定位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:12:43