2016-03-08 2 views
1

Я знаю, что это было задано раньше. Но мой код, похоже, не работает для пользователей, кроме тех, кто использует accesstoken. .. ie I am возможность получить доступ к профилю только одного пользователя. (с помощью которого я создал маркер доступа)Получение числа последователей пользователя в Instagram с помощью API Instagram

from urllib2 import urlopen 
from json import load 
import json 
import json 
import sys 
import time 
import requests 

userid="userid_of_some_instagram_user" 
access_token="mytoken" 
url = "https://api.instagram.com/v1/users/%s/?access_token=%s"%(userid,access_token) 
response=urlopen(url) 
print(response) 
jsonobj=load(response) 

print "name:",jsonobj["data"]["username"] 
print "follows ",jsonobj["data"]["counts"]["follows"]," people" 
print "followed by ",jsonobj["data"]["counts"]["followed_by"]," people" 

ошибки я получаю, когда я пытаюсь получить доступ к другим профилям является

HTTPError: HTTP Error 400: BAD REQUEST

Edit : **Voila ! I have found the bug . It is the access key. I have tried with a different access key . It worked** 
+0

вы могли бы попробовать [/users/self](https://www.instagram .com/разработчик/конечные точки/пользователи/# get_users_self)? – walkingRed

+0

@walkingRed: Мы не можем указать userid при использовании self .. как это поможет – MysticForce

+0

Я мог бы найти решение: [Instagram-python] (https://github.com/Instagram/python-instagram) – walkingRed

ответ

0

Try Тхи s:

import json 
import requests 

access_token = "mytoken" 
url = "https://api.instagram.com/v1/users/self/?access_token={0}".format(access_token) 
response = requests.get(url) 
j = json.loads(response.text) 
if 'data' in j: 
    print("handle correct response") 
else: 
    print("handle incorrect response") 
+0

В моем коде я я могу получить доступ к себе .. но я не могу получить доступ к данным других пользователей – MysticForce

+0

Ok @MysticForce, но если вы измените URL-адрес для других пользователей, он работает, или это все еще ошибка с неправильным запросом? – walkingRed

+0

по-прежнему является ошибкой с неправильным запросом – MysticForce

1

Если вы не хотите бороться с новым InstagramAPI вы можете использовать обходной путь, как это:

import requests 
import json 
import time 
import random 

user = 'google' 
url = 'https://www.instagram.com/' 
url_user = '%s%s%s' % (url, user, '/') 
url_login = 'https://www.instagram.com/accounts/login/ajax/' 
s = requests.Session() 
s.cookies.update ({'sessionid' : '', 'mid' : '', 'ig_pr' : '1', 
        'ig_vw' : '1920', 'csrftoken' : '', 
        's_network' : '', 'ds_user_id' : ''}) 
login_post = {'username' : 'your_login', 
       'password' : 'your_pw'} 
s.headers.update() 
r = s.get(url) 
s.headers.update({'X-CSRFToken' : r.cookies['csrftoken']}) 
time.sleep(5 * random.random()) 
login = s.post(url_login, data=login_post, 
        allow_redirects=True) 
s.headers.update({'X-CSRFToken' : login.cookies['csrftoken']}) 
if login.status_code == 200: 
    r = s.get('https://www.instagram.com/') 
    finder = r.text.find('your_login') 

r = s.get(url_user) 
text = r.text 

finder_text_start = ('<script type="text/javascript">' 
        'window._sharedData = ') 
finder_text_start_len = len(finder_text_start)-1 
finder_text_end = ';</script>' 

all_data_start = text.find(finder_text_start) 
all_data_end = text.find(finder_text_end, all_data_start + 1) 
json_str = text[(all_data_start + finder_text_start_len + 1) \ 
       : all_data_end] 
user_info = json.loads(json_str) 
follower_count = user_info['entry_data']['ProfilePage'][0]['user']["followed_by"]['count'] 

print(follower_count) 
+0

Я получаю постоянный выход для этой программы .. это «2114591» – MysticForce

+0

и можете ли вы сказать, что именно вы пытаетесь сделать – MysticForce

Смежные вопросы