如何使用Python代码爬取指定Instagram帖子的评论?
如何用Python爬取Instagram公开帖子的评论
能否用Python代码爬取Instagram帖子的评论?我正在做一个项目,需要获取公开Instagram帖子下的用户评论内容。尝试用instaloader模块但没成功实现需求,不想下载用户完整个人资料,只希望能在代码里粘贴帖子链接,获取该特定帖子的评论,求解决方案。
当然可以实现这个需求,instaloader完全支持仅获取单条公开帖子的评论,无需下载用户完整资料。以下是针对你的需求优化后的可行方案:
核心思路
- 从帖子链接中提取短代码(Instagram帖子链接末尾的一串字符,比如
https://www.instagram.com/p/ABCDEF12345/中的ABCDEF12345) - 通过instaloader登录Instagram(避免未登录访问限制)
- 基于短代码定位目标帖子,提取评论及回复内容
完整可运行代码
import instaloader from urllib.parse import urlparse # 配置你的Instagram账号信息 USERNAME = "你的Instagram用户名" PASSWORD = "你的Instagram密码" # 替换为目标公开帖子的完整链接 POST_URL = "https://www.instagram.com/p/你的帖子短代码/" # 从帖子链接中自动提取短代码 def extract_shortcode(post_url): parsed_url = urlparse(post_url) return parsed_url.path.strip("/").split("/")[-1] # 初始化instaloader loader = instaloader.Instaloader() # 处理登录:优先加载已保存的会话,没有则用账号密码登录并保存会话 try: loader.load_session_from_file(USERNAME) except FileNotFoundError: loader.context.log_in(USERNAME, PASSWORD) loader.save_session_to_file() # 获取目标帖子对象 post_shortcode = extract_shortcode(POST_URL) target_post = instaloader.Post.from_shortcode(loader.context, post_shortcode) # 提取所有评论(包括评论的回复) all_comments_data = [] # 遍历顶级评论 for comment in target_post.get_comments(): all_comments_data.append({ "用户名": comment.owner.username, "评论内容": comment.text, "是否为回复": False }) # 遍历该评论的所有回复 for reply in comment.answers: all_comments_data.append({ "用户名": reply.owner.username, "评论内容": reply.text, "是否为回复": True }) # 输出或处理提取到的评论 for comment_item in all_comments_data: reply_tag = "【回复】" if comment_item["是否为回复"] else "" print(f"{reply_tag}{comment_item['用户名']}: {comment_item['评论内容']}")
注意事项与问题排查
- 登录限制:确保你的账号未开启两步验证(若开启需手动处理验证码);尽量使用常用账号,新注册账号容易被Instagram限制访问。
- 评论完整性:
get_comments()会自动处理Instagram的评论分页加载,但如果帖子评论量极大,可适当添加延迟(比如time.sleep(1))避免触发反爬机制。 - 权限问题:仅能爬取公开可见的帖子评论,私有账号的帖子无法访问。
内容的提问来源于stack exchange,提问作者andgeurd
相关产品推荐
相关产品推荐

