Python使用Instaloader写入Google Sheets时数值显示异常
问题根因
代码存在两个直接导致数值偏差的核心问题:
- 字段取值前后不一致:终端打印逻辑里取的是
followee.followers(粉丝数),写入表格时却取了followee.followees(关注数),两个字段含义完全不同,打印和写入的根本不是同一个指标。 - 未加载完整账号资料:
profile.get_followees()返回的是简化版Profile实例,Instagram的关注列表接口默认不会在返回结果中附带每个账号的关注数(followees)字段,直接访问未完成加载的实例属性时,拿到的是实例内部存储的用户ID等无效值,不是真实计数。你表格里显示的1.89E+18级别的数值,本质就是Instagram的19位用户ID被当成数字写入后显示为科学计数法的结果。
修复方案
- 统一采集字段:确认你要采集的是粉丝数还是关注数,全程使用对应属性,不要打印和写入用不同字段
- 对迭代得到的每个followee对象,先调用
load()方法拉取完整账号资料,再访问计数类属性 - 批量写入表格数据,避免逐行调用API触发限流,同时提升写入效率
修复后可运行代码
import gspread import instaloader loader = instaloader.Instaloader() gc = gspread.service_account(filename='creds.json') sh = gc.open_by_key('1cD8mX8tR2iSQgSmpk6QxBVVHYVV8VxGs2uhtA8iBSpQ') worksheet = sh.sheet1 # 替换为你的实际账号密码 loader.login(username, password) profile = instaloader.Profile.from_username(loader.context, "nba") data_to_write = [] for followee in profile.get_followees(): # 拉取账号完整资料 followee.load() # 按需选择要采集的字段,示例同时采集用户名、粉丝数、关注数 print(f'{followee.username} | 粉丝数: {followee.followers} | 关注数: {followee.followees}') data_to_write.append([followee.username, followee.followers, followee.followees]) # 批量写入所有数据到表格 worksheet.append_rows(data_to_write)
注意事项:
- 如果采集账号被限流、目标账号为私密账号无权限查看,
load()方法会抛出异常,建议添加try-except异常捕获逻辑避免程序直接中断- 写入后如果大数值显示为科学计数法,选中对应列将单元格格式设置为无小数的数值格式或纯文本格式即可正常显示
内容的提问来源于stack exchange,提问作者Anthony Madle
相关产品推荐
相关产品推荐

