使用Instapy修改like_until选择器后触发运行报错该如何解决
问题根因拆解
- 初始阶段出现的「Cannot detect post media type」提示,本质是Instagram前端DOM结构迭代后,Instapy内置的旧版媒体类型标识选择器(原绑定span标签)无法匹配新版页面节点,将选择器调整为div是适配新版页面的常规有效修复,这部分修改本身不存在逻辑问题。
- 修改后触发的
re.error: multiple repeat at position 8报错,属于正则语法非法导致的编译级错误,和页面加载、元素定位逻辑无关。报错触发点明确指向like_util.py的dont_likes_regex匹配逻辑,出现该问题的核心原因是修改like_until选择器时,误改动了相邻的正则字符串定义,导致正则表达式出现了无前置匹配项的连续重复元字符(比如孤立的*、?、+这类符号),Python re模块在编译规则时直接抛出异常,根本走不到实际匹配流程。
分步修复操作
- 打开报错指向的本地文件:
C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\site-packages\instapy\like_util.py,定位到第726行附近的代码段。 - 找到
dont_likes_regex对应的变量赋值行,逐字符检查正则字符串的合法性:- 排查是否存在连续无前置字符的重复元字符组合,比如单独出现的
**、孤立的*、孤立的?这类会触发multiple repeat报错的非法结构 - 补全修改选择器时误删除的正则字符串前缀,不要随意改动正则本身的匹配规则内容
- 可以把修正后的正则字符串放到本地Python交互环境中执行
re.compile(修正后的正则字符串),提前验证语法是否合法,避免反复运行脚本排查问题。
- 排查是否存在连续无前置字符的重复元字符组合,比如单独出现的
- 确认选择器修改的边界:把like_until规则对应的选择器修改控制在DOM定位语句本身,不要改动相邻的正则、日志打印、参数判断类代码。
- 完成修改后重新运行
session.like_by_tags(['bitcoin'], amount=11)脚本,验证异常是否消失。
内容的提问来源于stack exchange,提问作者Saeed Hosseini
相关产品推荐
相关产品推荐

