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

图1

【说明】:

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

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

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

#! /usr/bin/python

import time

PAGE_SIZE = 200

def print_users_list(ul):

"""

打印用户列表的详细信息

"""

index = 0

for user in ul:

uid = user["id"]

ugen = user["gender"]

uname = user["screen_name"]

#uloc = user["location"]

udesc = user["description"]

print "%-6d%-12d%-3s%s%s" % (index, uid, ugen, uname.ljust(20), udesc.ljust(40))

index += 1

def get_friends(client, uid=None, maxlen=0):

"""

读取uid用户的关注用户列表,默认uid=None,此时uid赋值为client.uid,而client.uid表示的是当前授权用户的uid.

"""

if not uid:

uid = client.uid

return get_users(client, False, uid, maxlen)

def get_followers(client, uid=None, maxlen=0):

"""

读取uid用户的粉丝列表,默认uid=None,此时uid赋值为client.uid,而client.uid表示的是当前授权用户的uid.

"""

if not uid:

uid = client.uid

return get_users(client, True, uid, maxlen)

def get_users(client, followersorfriends, uid, maxlen):

"""

调用API读取uid用户的关注用户列表或者粉丝列表,followersorfriends为True读取粉丝列表,为False读取关注好友列表,

参数maxlen设置要获取的好友列表的最大长度,为0表示没有设置最大长度,此时会尝试读取整个好友列表,但是API对于读取的

好友列表的长度会有限制,测试等级最大只能获取一个用户的5000条好友信息。

"""

fl = []

next_cursor = 0

while True:

if followersorfriends:

raw_fl = client.friendships.followers.get(uid=uid, cursor=next_cursor, count=PAGE_SIZE)

else:

raw_fl = client.friendships.friends.get(uid=uid, cursor=next_cursor, count=PAGE_SIZE)

fl.extend(raw_fl["users"])

next_cursor = raw_fl["next_cursor"]

if not next_cursor:

break

if maxlen and len(fl) >= maxlen:

break

time.sleep(1)

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的源代码:

#! /usr/bin/python

from initclient import initclient

import getfriends

APP_KEY = '2024******'

APP_SECRET = '91a57*************************'

CALLBACK = 'http://bingbingrobot.sinaapp.com/'

def main():

client = initclient.get_client(APP_KEY, APP_SECRET, CALLBACK)

print "===> creat client successfully, authorised uid is : ", client.uid

print "============================== users ==========================="

#读取当前授权用户的粉丝列表

fl = getfriends.get_followers(client)

#读取当前授权用户的关注好友列表

#fl = getfriends.get_friends(client)

#读取uid为‘1497035431’的用户的粉丝列表

#uid = '1497035431'#梁斌penny

#fl = getfriends.get_followers(client, uid=uid)

getfriends.print_users_list(fl)

if __name__ == '__main__':

main()

【说明】:

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

【总结】:

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

By:

python分析微博粉丝_新浪微博Python SDK笔记——获取粉丝列表或关注列表 | 学步园...相关推荐

  1. 用python分析拼多多_利用Python分析拼多多上卖的最热的产品, 结果出乎大多数人意料!...

    一.缘起 当然,我们先走第一步,开个头.现在,我们就从一个切面来窥探下. 二.我们获取了多少商品条目? 三.这些商品总共卖出了多少钱? 四.销售额前十的品类是哪些? 拼多多的主打品类是什么呢? 一级类 ...

  2. python分析b站_实战 | Python模型分析B站优质up主

    作者 | 远辰 来源 | 数据不吹牛 不管前浪还是后浪,能够浪起来的才算是好浪. 相信大家最近都被号称"浪里白条"的b站刷了不止一次屏.这次咱们先不谈价值观,主要从数据的角度,扒一 ...

  3. python分析推特_用Python关注者的关注者抓取Twitter数据的最快方法

    我在用Python在Twitter上做一个关于用户社交关系的研究.在 问题是"什么是最快的方式抓取某个用户的关注者信息" 我搜索了很多信息,目前正在使用Tweepy:c = twe ...

  4. python分析nginx日志_利用python分析nginx日志

    最近在学习python,写了个脚本分析nginx日志,练练手.写得比较粗糙,但基本功能可以实现. 脚本功能:查找出当天访问次数前十位的IP,并获取该IP来源,并将分析结果发送邮件到指定邮箱. 实现前两 ...

  5. python分析每月销售数据_利用Python进行某单品销售数据分析

    本篇文章将利用Python工具对一份某商品的销售数据进行如下几个方面的分析,结合业务场景,构件常用业务指标,以从销售数据中挖掘出其潜在的商业价值,促进运营.用户消费趋势分析: 用户个体消费分析: 用户 ...

  6. 用python分析excel数据_用 python 做数据分析:pandas 的 excel 应用初探

    大毛 岂安科技业务风险分析师 多年订单业务反欺诈经验,负责岂安科技多款产品运营工作. 上回笔者分享过一些 pandas 的常用数据查询语法,但是数据查询对于 pandas 而言只是冰山一角,它还有着更 ...

  7. python分析每月销售数据_用Python爬虫分析演唱会销售数据

    开篇先科普一下,其实广义范围来定义黄牛,做票务代理的都叫黄牛,只是要分大黄还是小黄,大黄就是大麦网,永乐,演唱会承办方这类,可以称为一级票代,小黄就是淘宝天猫,各地方票务销售点,现场蹲点叫卖的那些卖票 ...

  8. python分析保险销售数据_利用python进行保险数据分析及可视化

    前言 现在数据分析在各个行业都在广泛的使用,尤其由于python语言的简便.高效性,在一些中小型企业的实际应用中逐渐替代excel公式.透视图等传统方式.网上各种博客论坛这类文章很多,但保险行业的数据 ...

  9. python分析pcap文件_利用Python库Scapy解析pcap文件的方法

    每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢? pip安装scapy,然后解析pcap: import scapy fro ...

最新文章

  1. 【poe设备加电配置】
  2. C# 全选中数字文本框内容
  3. golang中的strings.ContainsAny
  4. DNS、IP地址、子网掩码和网关
  5. VTK:可视化算法之FlyingHeadSlice
  6. 【Linux】一步一步学Linux——tr命令(55)
  7. 【Java】线程创建方式:Callable接口 / 使用线程池
  8. _linux中curl命令详解-linux运维
  9. 设计模式07----代理模式
  10. python数据预处理
  11. Learn OpenGL(二)——顶点输入(Vertex Input)
  12. python集合类型
  13. 【四阶龙格库塔法求解二元常微分方程组】
  14. C# 获取硬盘序列号
  15. OpenJudge NOI题库 入门 116题 (一)
  16. vtuber面部捕捉工具_如何做一名VTuber?一个VUP就足够
  17. cmake:cmake_minimum_required命令
  18. linux+硬盘热插拔原理,Linux下关于热插拔硬盘的指令
  19. 文件批量改名-bat操作
  20. EM4100 低频125Khz ID卡

热门文章

  1. 历届数据挖掘课程中参加kaggle、天池、数据城堡、datacastle等互联网数据挖掘竞赛资源
  2. mysql的索引介绍
  3. vue admin后台管理系统快速开发源码/模板文档
  4. 机器人焊枪动作与编程实验_机器人实验指导用书.doc
  5. Oracle 数据库的备份与恢复
  6. 智慧水务系统建设方案(污水处理、智慧防汛、智慧水务、智慧水利)
  7. javascript注入攻击为什么厉害
  8. 真无线蓝牙耳机什么好?性价比不错的无线耳机
  9. 美图手机显示无服务器,美图手机云服务器
  10. 电脑如何批量修改图片350dpi? 分享一款实用的在线图片处理工具