• 新浪微博API的使用Python


    本文记录了用新浪微博官方Python SDK调用API进行开发的流程。

    准备工作

    申请成为开发者并创建一个应用:

    首先要有一个新浪微博的账号,然后去新浪微博开放平台(http://open.weibo.com/)创建一个应用,具体的步骤官网文档介绍的非常详细:在开发者页面点击“登录” -> “创建应用” -> 选择应用类型(如“网页应用”)-> 填写应用信息。

    P.S.,应用需要设置一个回调地址(CALL_BACK),可以设定为默认的回调网址:https://api.weibo.com/oauth2/default.html

    这一步完成后,将得到三个有用的信息:APP_KEY,APP_SECRET和CALL_BACK,这三个信息在后面编写程序时将用到。

    OAuth2.0授权

    微博开放接口的调用,如发微博、关注等,都是需要获取用户身份认证的。目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。官方文档有非常详细的说明,了解了授权机制后有助于使用SDK编写程序的过程。

    下载和安装新浪微博Python SDK

    打包下载新浪微博官方Python SDK,网页中说明了安装有两种方式,第一种用命令行工具pip安装,第二种下载源码包安装。

    对于第一种安装方式,pip是Python的包管理工具,可以很方便的安装Python模块。安装成功后,只需在命令行(或linux终端)中执行pip install sinaweibopy,SDK的包sinaweibopy就安装完毕。测试是否安装成功,可以在python命令行中输入:import weibo,如果没有错误提示说明安装成功。实际上Python SDK主要就是模块weibo,后面在使用SDK时就是调用该模块中的函数。

    对于第二种方式,需要拷贝下载的源码到安装目录或者配置Python模块搜索的Path中。


    读写微博接口程序

    下面就可以调用微博API写微博操作程序了,下面简单介绍一个抓取微博数据的程序。

    # _*_ coding: utf-8 _*_
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    from weibo import APIClient
    import json
    import webbrowser
    import io
    
    APP_KEY = '' ## 填写应用程序的信息
    APP_SECRET = ''
    CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'
    
    client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
    url = client.get_authorize_url()
    # TODO: redirect to url
    
    webbrowser.open_new(url)
    #print url
    # obtain url code:
    code = raw_input("input the code: ").strip()
    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 # token过期的UNIX时间:http://zh.wikipedia.org/wiki/UNIX%E6%97%B6%E9%97%B4
    # TODO: 在此可保存access token
    client.set_access_token(access_token, expires_in)
    
    res = client.statuses.public_timeline.get(count=200) ##返回最新的200条热门微博
    #res  = client.statuses.user_timeline.get()  ##返回作者发布的历史微博
    #res = client.statuses.friends_timeline.ids.get() ##返回好友发布的微博id
    #res=client.emotions.get()
    
    a = json.dumps(res, ensure_ascii = False,indent = 2)
    fout = io.open('test','w',encoding='utf-8')
    fout.write(a)

    运行程序,自动打开回调页,将网址内的“code”拷贝至程序,程序执行成功后,就可以得到微博数据了。

    这里实际是调用新浪微博提供的API,具体参考官方文档

  • 相关阅读:
    sizeof
    p与p->next
    每天学点java_Date类使用
    每天学点java_修饰符
    每天学点java_UML类图
    每天学点java_Arrays类
    每天学点java_插入排序
    每天学点java_for循环
    每天学点java_选择排序
    centos7 mysql
  • 原文地址:https://www.cnblogs.com/tec-vegetables/p/4506943.html
Copyright © 2020-2023  润新知