python调用新浪微博API爬取用户的好友列表(windows 64位,pyCharm)

        由于社交网络分析课题研究的需要,需要获得指定用户的好友列表数据,所以,调用新浪微博API进行实践。虽然新浪微博开放平台接口升级后只能获取当前登录用户的部分好友列表,无法满足研究需求,但还是以此记录初次调用API爬取数据的体验。

       1. 在微博开放平台(http://open.weibo.com/)下创建一个应用,获得App Key 和 App Secret

          python调用新浪微博API爬取用户的好友列表(windows 64位,pyCharm)_第1张图片


       2. 在“应用信息”下的“高级信息”处,将“授权回调页面”设置为:https://api.weibo.com/oauth2/default.html,将“取消授权回调页”也设置为:https://api.weibo.com/oauth2/default.html。

        python调用新浪微博API爬取用户的好友列表(windows 64位,pyCharm)_第2张图片

     3. 下载新浪微博python SDK(http://github.liaoxuefeng.com/sinaweibopy/),并解压到当前文件夹sinaweibopy。

     4. 打开PyCharm,新建项目Crawl,并新建Python File,命名为weibo_api.py,同时,打开workspace,将sinaweibopy文件夹下的weibo.py拷贝到workspace下的Crawl所在文件夹。

        

   5.  爬取好友列表的python代码如下。

 
   
 
   
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from weibo import APIClient
import webbrowser#python内置的包

APP_KEY = '*************'#注意替换这里为自己申请的App信息
APP_SECRET = '**************************'
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'#回调授权页面
#利用官方微博SDK
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
#得到授权页面的url,利用webbrowser打开这个url
url = client.get_authorize_url()
print url
webbrowser.open_new(url)
#获取code=后面的内容
print '输入urlcode后面的内容后按回车键:'
code = raw_input()
r = client.request_access_token(code)
access_token = r.access_token # 新浪返回的token,相似abc123xyz456
expires_in = r.expires_in
# 设置得到的access_token
client.set_access_token(access_token, expires_in)
print 'friends list:'
 
   
 
   
 
   
resFollows = []
nextCursor = -1
while nextCursor != 0:
    followers = client.get.friendships__friends(uid='*********', count=200, cursor=nextCursor)
    nextCursor = followers["next_cursor"]
    for follower in followers["users"]:
        fid = follower['id']
        name = follower['screen_name']
        text = "friends---" + str(fid) + ":" + name
        text = text.encode("utf-8")
        print(text)
        resFollows.append((follower["screen_name"], follower["gender"]))

print 'Total friends: %d',% len(resFollows)
  注意:
 
  
  • API接口信息参考API文档(http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI),以friendships/friends为例,有三种调用方式:
         1).client.get.friendships__friends(),将“/”替换成两个“_”,同时根据请求是POST还是GET,使用get或者post;
         2).对于get方式,调用时可以省略get,即client.friendships__friends()
         3).client.friendships__friends.get(),将API中的“/”更换成“.”,同时最后指定是get方式还是post方式。
 
  
  • friendships/friends参数说明:
    参数uid与screen_name二者必选其一,且只能选其一;
    接口升级后:uid与screen_name只能为当前授权用户;
    只返回同样授权本应用的用户,非授权用户将不返回;
    例如一次调用count是50,但其中授权本应用的用户只有10条,则实际只返回10条;
    使用官方移动SDK调用,多返回30%的非同样授权本应用的用户,总上限为500。

你可能感兴趣的:(python调用新浪微博API爬取用户的好友列表(windows 64位,pyCharm))