使用Python的Instagram API

Man*_*edi 3 python api python-2.7 instagram instagram-api

我目前正在使用Python的python-instagram库在沙盒模式下使用Instagram API .现在,我有一个应用程序及其关联的客户端ID,客户端密钥和访问令牌,以及一个连接的沙箱用户.

今天早些时候,我正在尝试使用users/search端点.首先,我直接使用他们的端点URL发送请求:

https://api.instagram.com/v1/users/search?q=XXXX&access_token=<my_access_token> 
Run Code Online (Sandbox Code Playgroud)

这里XXXX是我的Instagram应用程序的连接的沙箱用户.这是生成的响应:

{"meta":{"code":200},"data":[{"username":"XXXX","bio":"Twitter: @XXXX","website":"","profile_picture":"https:a.jpg","full_name":"XXXX XXXX","id":"22222222"}]}
Run Code Online (Sandbox Code Playgroud)

现在,我尝试使用该python-instagram库将请求发送到同一端点,如下所示:

from instagram.client import InstagramAPI
access_token = <my_access_token>

api = InstagramAPI(client_secret='aaaa', access_token = access_token[0])
usr = api.user_search('XXXX')

print usr
Run Code Online (Sandbox Code Playgroud)

但是,这是我在这种情况下得到的回应:

[User: XXXX]
Run Code Online (Sandbox Code Playgroud)

当我尝试使用直接URL和Python库调用相同的端点时,为什么会得到不同的响应?

Fla*_*ois 8

什么python-instagram是做的是,它会带你得到的原始JSON响应,当你发出一个HTTP请求,并将其映射到Python对象.

当您发出a时print usr,您正在打印User列表中的对象,因此您会看到一个字符串[User: XXXX].

您可以在此处找到用于User对象的模型.它实际上直接映射Json中的字段以获取属性.

请尝试以下代码来检索用户名和ID:

my_usr = usr[0]
print 'User id is', my_usr.id, 'and name is ', my_usr.username
Run Code Online (Sandbox Code Playgroud)

  • 没问题.我喜欢使用IPython来处理基于对象的库(而且API库做了很多).IPython允许很多有用的东西,包括自动完成.例如,您可以完成`my_usr.并按Tab键以立即知道字段是什么.你也可以使用`dict(my_usr)`但它不是那么漂亮. (3认同)