Python大法:新浪微博也可以这么玩^_^


环境准备

  • 新浪微博API

    • 首先,注册一个新浪开发者帐号,并在 新浪开发平台 新建一个 app.
      [ps]:开发者平台好像不能登陆,我是通过登陆微博页面然后找到链接进去的

    • 创建好应用之后在 '应用信息 -> '基本信息' 里面获取 App KeyApp Secret.
      [ps]:我创的是客户端桌面应用,可以随便创

    • 在 '应用信息 -> '高级信息' 里面设置好 '授权回调页'.
      [ps]:默认回调页为'https://api.weibo.com/oauth2/default.html'

  • 安装weibo包 开源在github

pip install weibo

  • Token认证

下面分别用 API_KEY, API_SECRET, REDIRECT_URI 代表准备工作里面的三个参数。

>>> from weibo import Client    
>>> c = Client(API_KEY, API_SECRET, REDIRECT_URI)   
>>> c.authorize_url     
'https://api.weibo.com/oauth2/authorize?redirect_uri=http%3A%2F%2F127.0.0.1%2Fcallback&client_id=123456'    

复制链接到浏览器打开,获取 code(在URL中).

>>> c.set_code('abcdefghijklmn')

client 初始化完成。token 可以被保存下来供下次调用时直接使用。

>>> token = c.token
>>> c2 = Client(API_KEY, API_SECRET, REDIRECT_URI, token)
>>> c2.get('users/show', uid=2703275934)
  • 帐号认证

除了使用 token 认证,还可以使用 username / password 进行认证。

>>> from weibo import Client
>>> c = Client(API_KEY, API_SECRET, REDIRECT_URI, username='admin', password='secret')
>>> c.get('users/show', uid=1282440983)
  • 接口调用

参考 微博开发文档_ 进行接口调用。


代码实例

功能:发微博(好像要发公开的)远程执行windows命令并在评论区回显结果

# -*-coding:utf-8 -*-
from weibo import Client
import time
import subprocess

# 用户自定义变量
APP_KEY = ''    # App_key
APP_SECRET = ''   # App_serect
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'
AUTH_URL = 'https://api.weibo.com/oauth2/authorize'
USERID = ''     # 登陆微博时的用户名(邮箱或手机号)
PASSWD = ''  # 密码


def main():
    """获取用户第一条评论,当第一条微博改变时,进行命令执行,并在微博评论处返回执行信息"""

    c = Client(APP_KEY, APP_SECRET, CALLBACK_URL, username=USERID, password=PASSWD)

    print 'Login success'
    print 'Listening...'

    UID = c.get('account/get_uid')['uid']  # 获取用户UID
    status = c.get('users/show', uid=UID)['status']  # 获取用户最近微博

    current_status = status
    while True:
        current_status = c.get('users/show', uid=UID)['status']  # 获取用户最近微博
        current_text = current_status['text']
        current_id = current_status['id']
        print time.ctime(), current_text

        if current_id != status['id'] and current_text:
            tmp = subprocess.check_output(current_text, shell=True)  # 执行shell命令
            tmp = tmp[:140]  # 140字限制
            c.post('comments/create', id=current_id, comment=tmp)
            print tmp
            status = current_status

        time.sleep(10)  # ip限制1000次/小时


if __name__ == '__main__':
    main()


测试结果

项目及图片转自github

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,463评论 19 139
  • 巧妇难为无米之炊。数据获取是数据分析的前提。许多网站会通过API接口向第三方开放网站的部分数据。新浪微博也不例外。...
    东抢阅读 31,985评论 2 14
  • 今年年初,第一份实习,接触了如何使用Facebook API, Twitter API...去获取数据,自动发个F...
    Jason_Yuan阅读 16,211评论 3 51
  • 过程都是一样的: 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并...
    米刀灵阅读 8,043评论 0 1
  • 还很很多哦~~~如果同样喜欢小丸子的话 可以加我微信哦 ,打包发~
    小雨点41阅读 5,916评论 0 0