当前位置:   article > 正文

新浪微博Python SDK笔记——获取粉丝列表或关注列表_微博调用接口查看别人关注了

微博调用接口查看别人关注了

上一节中创建了一个initclient包,封装了授权的过程,通过获取的myAPIClient对象可以直接调用API接口进行微博操作,上一节中就调用了发微博的接口发了一条新微博。这一节还是直接使用initclient包,调用获取关注好友或粉丝的API来获取好友数据,并将实现的获取好友信息的功能封装在getfriends.py中,然后实现了main.py调用了其中的接口,获取了好友信息并打印出来,运行的结果如图1所示。

 

图1

【说明】:

(1)可以看出,授权过程跟上一节完全一样,是从文件中读取的上一次成功授权的access_token,没有重新进行授权;

(2)以列表的形式输出了好友的几项主要信息:uid,性别,屏幕名称和个人描述。

下面看一下getfriends.py的源码:

  1. #! /usr/bin/python
  2. import time
  3. PAGE_SIZE = 200
  4. def print_users_list(ul):
  5. """
  6. 打印用户列表的详细信息
  7. """
  8. index = 0
  9. for user in ul:
  10. uid = user["id"]
  11. ugen = user["gender"]
  12. uname = user["screen_name"]
  13. # uloc = user["location"]
  14. udesc = user["description"]
  15. print "%-6d%-12d%-3s%s%s" % (index, uid, ugen, uname.ljust(20), udesc.ljust(40))
  16. index += 1
  17. def get_friends(client, uid=None, maxlen=0):
  18. """
  19. 读取uid用户的关注用户列表,默认uid=None,此时uid赋值为client.uid,而client.uid表示的是当前授权用户的uid.
  20. """
  21. if not uid:
  22. uid = client.uid
  23. return get_users(client, False, uid, maxlen)
  24. def get_followers(client, uid=None, maxlen=0):
  25. """
  26. 读取uid用户的粉丝列表,默认uid=None,此时uid赋值为client.uid,而client.uid表示的是当前授权用户的uid.
  27. """
  28. if not uid:
  29. uid = client.uid
  30. return get_users(client, True, uid, maxlen)
  31. def get_users(client, followersorfriends, uid, maxlen):
  32. """
  33. 调用API读取uid用户的关注用户列表或者粉丝列表,followersorfriends为True读取粉丝列表,为False读取关注好友列表,
  34. 参数maxlen设置要获取的好友列表的最大长度,为0表示没有设置最大长度,此时会尝试读取整个好友列表,但是API对于读取的
  35. 好友列表的长度会有限制,测试等级最大只能获取一个用户的5000条好友信息。
  36. """
  37. fl = []
  38. next_cursor = 0
  39. while True:
  40. if followersorfriends:
  41. raw_fl = client.friendships.followers.get(uid=uid, cursor=next_cursor, count=PAGE_SIZE)
  42. else:
  43. raw_fl = client.friendships.friends.get(uid=uid, cursor=next_cursor, count=PAGE_SIZE)
  44. fl.extend(raw_fl["users"])
  45. next_cursor = raw_fl["next_cursor"]
  46. if not next_cursor:
  47. break
  48. if maxlen and len(fl) >= maxlen:
  49. break
  50. time.sleep(1)
  51. return fl

【说明】:

(1)该模块中一共4个函数,get_friends和get_followers分别为获取关注好友和粉丝的接口,print_users_list为打印好友详细信息的接口。get_users为调用API的实现函数;

(2)获取关注好友和获取粉丝的API非常相似,前者是client.friendships.friends.get,后者是client.friendships.followers.get,所以我二者封装在get_users函数中,通过参数followersorfriends表示要获取的类型,接口get_followers和get_friends调用该函数,分别传入True和False;

(3)get_users函数的最后一个参数maxlen设置要获取的好友列表的最大长度,因为用户的好友列表有可能非常长,不需要全部获取时就可以设置maxlen。如果maxlen为0表示没有设置最大长度,此时会尝试读取整个好友列表,为什么说是“尝试”呢?因为API对于好友列表的获取时有限制的,测试等级最大只能获取一个用户的5000条好友信息(这个在官方文档中有说明);

(4)调用API时有一个参数count=PAGE_SIZE,因为该API读取好友列表时是按页读取的,该参数表示页的大小(即好友信息条数),默认为50,最大为200,这里设置为200,这些官方文档中都有详细说明;

(5)调用API时有一个参数cursor,表示要读取下一页的首条记录序号,每成功读取一页数据,数据中都包含了next_cursor属性,下次继续读取时从next_cursor开始读,关于cursor的详细情况可以阅读官方的API手册;

(6)print_users_list打印好友详细信息,其实详细信息项目非常的多,这里只是打印了其中的几项,可以根据自己的需要修改。

 

下面看一下main.py的源代码:

  1. #! /usr/bin/python
  2. from initclient import initclient
  3. import getfriends
  4. APP_KEY = '2024******'
  5. APP_SECRET = '91a57*************************'
  6. CALLBACK = 'http://bingbingrobot.sinaapp.com/'
  7. def main():
  8. client = initclient.get_client(APP_KEY, APP_SECRET, CALLBACK)
  9. print "===> creat client successfully, authorised uid is : ", client.uid
  10. print "============================== users ==========================="
  11. #读取当前授权用户的粉丝列表
  12. fl = getfriends.get_followers(client)
  13. #读取当前授权用户的关注好友列表
  14. # fl = getfriends.get_friends(client)
  15. #读取uid为‘1497035431’的用户的粉丝列表
  16. #uid = '1497035431' #梁斌penny
  17. # fl = getfriends.get_followers(client, uid=uid)
  18. getfriends.print_users_list(fl)
  19. if __name__ == '__main__':
  20. main()

【说明】:

有了授权模块initclient和获取好友模块getfriends.py,main.py的内容就非常简单了。创建myAPIClient对象,调用getfriends模块的get_friends或get_followers接口获取好友数据,然后调用print_users_lis接口打印。非常简单,不在啰嗦了!

 

【总结】:

这两节中创建的initclient模块和getfriends模块都可以复用,开发其他功能时都可以直接使用,例如要对好友信息进行统计(如统计男女比例、兴趣分布、地区分布等)时,先用getfriends模块获取好友列表。

 

By:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/56733
推荐阅读
相关标签
  

闽ICP备14008679号