使用instagramy获取Ins数据时,存在的用户却被提示未找到
问题描述
尝试使用instagramy库从Instagram获取IPL球队账号数据,用户名都是直接从Instagram复制的,但反复收到「用户不存在」的错误,同时伴随HTTP重定向循环报错。
代码示例
from instagramy.plugins.analysis import analyze_users_popularity import pandas as pd session_id = "58094758320%3AcPGOQQFP3YK2sq%3A0%3AAYeC7jQGmpaEYf2il0Evg60SXDeJarTsjUjc5TG7RQ" # Instagram user_id of ipl teams teams = ["chennaiipl", "mumbaiindians", "royalchallengersbangalore", "kkriders", "delhicapitals", "sunrisershyd", "kxipofficial"] data = analyze_users_popularity(teams ,session_id) df= pd.DataFrame(data) df
报错信息
HTTPError: The HTTP server returned a redirect error that would lead to an infinite loop. The last 30x error message was: Found During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\siddh\OneDrive\Desktop\instagram scrapper.py", line 17, in <module> data = analyze_users_popularity(teams ,session_id) File "C:\Users\siddh\anaconda3\lib\site-packages\instagramy\plugins\analysis.py", line 16, in analyze_users_popularity user = InstagramUser(username, sessionid) File "C:\Users\siddh\anaconda3\lib\site-packages\instagramy\InstagramUser.py", line 61, in __init__ data = self.get_json() File "C:\Users\siddh\anaconda3\lib\site-packages\instagramy\InstagramUser.py", line 83, in get_json raise UsernameNotFound(self.url.split("/")[-2]) UsernameNotFound: InstagramUser('chennaiipl') not Found
解决方案
1. 确认用户名有效性
- 部分IPL球队的Instagram账号已更名,比如列表里的
kxipofficial已改为punjabkingsipl,使用旧用户名会直接触发「不存在」错误。 - 手动逐个在Instagram网页端搜索用户名,确认账号是否存在、是否更名。
2. 更新Session ID
- Instagram的
sessionid会定期失效,当前使用的sessionid大概率已过期,重新获取步骤:- 登录Instagram网页版,按F12打开开发者工具
- 切换到「Application」(Chrome)或「存储」(Firefox)标签,找到「Cookies」下的
sessionid - 复制最新的
sessionid替换代码中的旧值
3. 升级instagramy库
- 旧版本库可能不兼容Instagram最新的API重定向逻辑,执行命令升级:
pip install --upgrade instagramy
4. 降低请求频率避免反爬限制
- Instagram有严格的反爬机制,一次性请求多个账号易触发限制,建议分批请求并添加延时:
from instagramy.plugins.analysis import analyze_users_popularity import pandas as pd import time session_id = "你的最新sessionid" # 更新后的有效用户名列表 teams = ["chennaiipl", "mumbaiindians", "royalchallengersbangalore", "kkriders", "delhicapitals", "sunrisershyd", "punjabkingsipl"] data = [] for team in teams: try: # 单次请求一个用户 user_data = analyze_users_popularity([team], session_id) data.extend(user_data) time.sleep(2) # 每次请求后暂停2秒,避免触发反爬 except Exception as e: print(f"处理账号 {team} 时出错: {str(e)}") df = pd.DataFrame(data) print(df)
内容的提问来源于stack exchange,提问作者siddhant bhasin
相关产品推荐
相关产品推荐

