首页 > 解决方案 > 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)

标签: pythonjsonpython-3.xinstagraminstagram-api

解决方案


文档表明此代码过去可能有效,但由于提供商不再支持该端点,因此将不再有效。考虑将此代码移植到他们的新 Graph API。


推荐阅读