instapy-0.6.14执行like_by_tags时报KeyError:0错误如何解决?
问题根因
这个KeyError: 0是instapy 0.6.14版本的常见问题,核心原因有两个:一是Instagram前端接口返回结构发生了更新,旧版本instapy的解析逻辑无法匹配新的返回格式;二是0.6.14版本本身不支持Python 3.10,版本兼容性问题也会触发解析异常。
排查与解决步骤
- 首先降级Python版本,instapy 0.6.14最高兼容Python 3.9,卸载你当前的Python 3.10,安装Python 3.9版本后重新安装instapy依赖。
- 修正标签传参格式,
like_by_tags方法会自动给标签补全#前缀,你不需要手动加,把入参从["#carz"]改为["carz"]即可,错误的标签格式会导致搜索结果为空,同样会触发该报错。 - 修改instapy源码的解析逻辑,找到报错路径下的
C:\Users\sonu3\AppData\Local\Programs\Python\Python310\lib\site-packages\instapy\like_util.py文件,定位到618行的media = post_page[0]["shortcode_media"]代码,替换为如下适配逻辑:
if isinstance(post_page, list) and len(post_page) > 0: media = post_page[0]["shortcode_media"] else: # 适配Instagram新返回结构 if 'items' in post_page and len(post_page['items']) > 0: media = post_page['items'][0]['media'] else: # 无有效内容直接跳过 return True, None, False, "no valid post available", None
- 优化启动代码,推荐使用官方推荐的
smart_run上下文管理器管理会话,避免会话异常退出引发的解析错误,修改后的业务代码参考:
from instapy import InstaPy from instapy import smart_run # 登录凭证 insta_username = '****' insta_password = '****' # 初始化会话,关闭无头模式方便调试 session = InstaPy(username=insta_username, password=insta_password, headless_browser=False) with smart_run(session): session.like_by_tags(["carz"], amount=5)
内容的提问来源于stack exchange,提问作者Sonu Tyagi
相关产品推荐
相关产品推荐

