如何用Python的Instaloader仅下载Instagram账号的新图片?
解决Instaloader仅下载新内容(动态/快拍)的问题
要实现仅下载目标账号的新动态和快拍,核心是正确使用LatestStamps类记录上次下载的时间戳,让Instaloader只抓取该时间点之后的内容。下面是修改后的完整可运行代码,以及关键细节说明:
完整代码
import instaloader from instaloader import LatestStamps # 初始化Instaloader,配置下载参数 ig = instaloader.Instaloader( save_metadata=False, download_video_thumbnails=False, download_only_new=True # 配合LatestStamps,确保只下载未获取过的内容 ) # 指定存储时间戳的文件(首次运行自动创建,后续自动读取) timestamp_file = "ig_download_timestamps.json" ig.latest_stamps = LatestStamps(timestamp_file) # 你的Instagram账号信息 USER = "你的账号" PASSWORD = "你的密码" # 获取目标账号名称 target_profile = input("输入要下载的Instagram账号名: ") print("开始下载新内容...") # 登录账号(私人账号需确保已关注) ig.login(USER, PASSWORD) # 下载目标账号的动态+快拍,仅下载新内容 ig.download_profile( target_profile, download_stories=True, # 开启快拍下载,若只需动态可设为False profile_pic=False ) # 手动保存时间戳(Instaloader通常会自动保存,手动调用更稳妥) ig.latest_stamps.save() print("下载完成!仅同步了新增内容。")
关键细节说明
LatestStamps的作用:它会在指定的JSON文件中记录每个目标账号的最后下载时间戳,下次运行时自动跳过该时间点之前的所有内容。- 首次运行逻辑:如果时间戳文件不存在,会下载目标账号的全部历史内容,同时生成时间戳文件;后续运行只抓取新增内容。
- 参数搭配:
download_only_new=True是额外保障,即使时间戳记录有偏差,也不会重复下载已存在的文件。 - 单独下载快拍/动态:
- 仅下载快拍:将
download_profile的参数改为download_stories_only=True - 仅下载动态:去掉
download_stories参数(默认False)
- 仅下载快拍:将
注意事项
- 若目标是私人账号,登录的账号必须已关注该账号,否则无法获取内容。
- 不要手动修改时间戳文件,否则会破坏下载逻辑;若要重新下载全部内容,直接删除时间戳文件即可。
内容的提问来源于stack exchange,提问作者Komand
相关产品推荐
相关产品推荐

