如何通过http请求获取Instagram中的关注者和关注列表

时间:2016-06-06 13:26:31

标签: python instagram

我正在寻找通过网络请求以与JSON格式相关的关注者和关注列表的可能性(与Instagram网站上的方式相同)。 例如,我可以通过请求登录,并获取用户信息:

def get_user_info(self, user_name):
    url = "https://www.instagram.com/" + user_name + "/?__a=1"
    try:
        r = requests.get(url)
    except requests.exceptions.ConnectionError:
        print 'Seems like dns lookup failed..'
        time.sleep(60)
        return None
    if r.status_code != 200:
        print 'User: ' + user_name + ' status code: ' + str(r.status_code)
        print r
        return None
    info = json.loads(r.text)
    return info['user']

我试图查看Chrome发送到服务器的请求,但未成功。 问题是:如何在没有Instagram API的情况下准备类似的get或post请求来检索关注者列表?

2 个答案:

答案 0 :(得分:5)

使用query_hash =“58712303d941c6855d4e888c5f0cd22f”(以下)和“37479f2b5209594dde7facb0d904896a”(关注者)的GraphQL查询返回此信息。登录后,使用参数query_hashvariables对Instagram.com/graphql/query执行GET查询,其中variables是一组JSON格式的变量id (用户ID,如get_user_info()函数的返回字典中),first(页面长度,似乎当前最大值为50),后续请求after设置为{ {1}}在上一个回复词典中。

或者,Instaloader库提供了一种方便的方式来登录,然后以编程方式访问配置文件的关注者和关注列表。

end_cursor

除了import instaloader # Get instance L = instaloader.Instaloader() # Login or load session L.login(USER, PASSWORD) # (login) L.interactive_login(USER) # (ask password on terminal) L.load_session_from_file(USER) # (load session created w/ # `instaloader -l USERNAME`) # Obtain profile metadata profile = instaloader.Profile.from_username(L.context, PROFILE) # Print list of followees for followee in profile.get_followees(): print(followee.username) # (likewise with profile.get_followers()) 之外,usernamefull_nameuserid以及更多属性都是在为每个跟随者返回的followed_by_viewer实例中定义的。< / p>

答案 1 :(得分:-4)

简单(只需用__a替换_a)

'https://www.instagram.com/'+user_name+'/followers/?_a=1'
'https://www.instagram.com/'+user_name+'/following/?_a=1'