python - KeyError:instagram 脚本中的“数据”错误在低数字上没有问题,但在 100-150 以上的数字上没有问题
问题描述
我有一个 Instagram 脚本,用于将关注者和取消关注者列表生成到单独的 excel 文件中。它适用于拥有 50-60 或更少关注者并关注的帐户,但是一旦我在拥有 100 多个关注者/关注者的帐户上使用它,它就会给我以下错误
回溯(最后一次调用):文件“insta-unfollower.py”,第 229 行,在 main() 文件“insta-unfollower.py”,第 183 行,在 main follower_list = get_followers_list() 文件“insta-unfollower.py ",第 140 行,get_followers_list 中的边缘响应 ['data']['user']['edge_followed_by']['edges']: KeyError: 'data'
这是功能
def get_followers_list():
followers_list = []
followers_post = {
'query_id': 17851374694183129,
'variables': {
'id': session.cookies['ds_user_id'],
'first': 60
}
}
followers_post['variables'] = json.dumps(followers_post['variables'])
response = session.get(query_route, params=followers_post)
response = json.loads(response.text)
for edge in response['data']['user']['edge_followed_by']['edges']:
followers_list.append(edge['node'])
while response['data']['user']['edge_followed_by']['page_info']['has_next_page']:
time.sleep(random.randint(5, 15))
followers_post = {
'query_id': 17851374694183129,
'variables': {
'id': session.cookies['ds_user_id'],
'first': 3,
'after': response['data']['user']['edge_followed_by']['page_info']['end_cursor']
}
}
followers_post['variables'] = json.dumps(followers_post['variables'])
response = session.get(query_route, params=followers_post)
response = json.loads(response.text)
for edge in response['data']['user']['edge_followed_by']['edges']:
followers_list.append(edge['node'])
return followers_list
这是主要的函数调用
def main():
if not os.environ.get('USERNAME') or not os.environ.get('PASSWORD'):
sys.exit('please provide USERNAME and PASSWORD environement variables. Abording...')
is_logged = login()
if is_logged == False:
sys.exit('login failed, verify user/password combination')
time.sleep(random.randint(1, 3))
connected_user = get_user_profile(os.environ.get('USERNAME'))
print('You\'re now logged as {}'.format(connected_user['username']))
print('{} followers'.format(connected_user['edge_followed_by']['count']))
print('{} following'.format(connected_user['edge_follow']['count']))
time.sleep(random.randint(2, 6))
print('building followers list...')
followers_list = get_followers_list()
print('found {} followers'.format(len(followers_list)))
for i in followers_list:
l1.append(i['username'])
l2.append(i['full_name'])
df = DataFrame({'User name': l1, 'Full Name': l2})
df
df.to_excel('followers.xlsx', sheet_name='sheet1', index=False)
print ("input success")
is_logged_out = logout()
if is_logged_out:
sys.exit(0)
解决方案
文档表明此代码过去可能有效,但由于提供商不再支持该端点,因此将不再有效。考虑将此代码移植到他们的新 Graph API。
推荐阅读
- java - 如何将我的流值映射到我的对象类
- kubernetes - 警告日志 metricbeat pod(在 kubernetes 上):DNS 查找失败“k8s-node4”:在 10.96.0.10:53 上查找 k8s-node4:没有这样的主机
- javascript - 如果对象数组中的id匹配,如何插入名称值
- c# - 仅适用于当前连接/用户的静态类/值
- mysql - SQL 数据库转储/文本解析
- javascript - 将 JSX 内容移动到单独的文件时,它无法正确呈现
- mongodb - MongoDB查询对象数组
- swift - 构建完美的 swift 服务器端开发 没有团队帐号 "ABCDEFGH"
- css - CSS 在没有 HTML 的情况下在前台制作图像标题
- python - 使用for循环在python中分配数组值