Python调用微博API获取微博内容

  • 2020 年 1 月 10 日
  • 筆記

一:获取app-key 和 app-secret

    使用自己的微博账号登录微博开放平台(http://open.weibo.com/),在微博开放中心下“创建应用”创建一个应用,应用信息那些随便填,填写完毕后,不需要提交审核,需要的只是那个app-key和app-secret

二:设置授权回调页

    在“微博开放平台”的“管理中心”找到刚才创建的应用,点开这个应用,点开左边“应用信息”栏,会看见“App key”和“App Secret”的字样,这两个东西是要在后面程序中使用的。然后在“应用信息”下的“高级信息”点击“编辑”按钮,将“授权回调页面”设置为:https://api.weibo.com/oauth2/default.html,将“取消授权回调页”也设置为:https://api.weibo.com/oauth2/default.html。

三:安装微博 python SDK

有两种安装方式:

1:http://github.liaoxuefeng.com/sinaweibopy/下载新浪微博SDK

2:python有个简单的安装方式:直接在命令行下键入:

sudo pip install sinaweibopy

四:实例验证,获取当前登录用户及其所关注(授权)用户的最新微博

这里需要注意的是在浏览器弹出一个页面,要先点击“授权”(这里进行的OAuth 2认证,我理解为就是用户访问我的应用后将页面导向新浪服务器然后用户输入信息到新浪服务器后授权给我的应用访问用户数据,这里我将的微博授权给下面的程序了),授权后浏览器中的URL类似:https://api.weibo.com/oauth2/default.html?code=2024222384d5dc88316d21675259d73a将code后面那个复制到控制端,程序需要读入2024222384d5dc88316d21675259d73a这个数据 

注意:如果想获取别的信息,只需修改

statuses = client.statuses__friends_timeline()['statuses']

中的 statuses__friends_timeline即可

# -*- coding: utf-8 -*-  from weibo import APIClient  import webbrowser        #python内置的包    APP_KEY = 'xxxxxxxx'#注意替换这里为自己申请的App信息  APP_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'  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 '输入url中code后面的内容后按回车键:'  code = raw_input()  #code = your.web.framework.request.get('code')  #client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)  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)    #可以打印下看看里面都有什么东西  statuses = client.statuses__friends_timeline()['statuses'] #获取当前登录用户以及所关注用户(已授权)的微博</span>    length = len(statuses)  print length  #输出了部分信息  for i in range(0,length):      print u'昵称:'+statuses[i]['user']['screen_name']      print u'简介:'+statuses[i]['user']['description']      print u'位置:'+statuses[i]['user']['location']      print u'微博:'+statuses[i]['text']

结果如下(截取部分数据):

以下为我的关注用户的微博:

拿上边代码为例,这里我们获取的信息有: