美文网首页
Python大法:新浪微博也可以这么玩^_^

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

作者: Bugl0v3r | 来源:发表于2017-02-17 09:00 被阅读125次

    环境准备

    • 新浪微博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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/rlskwttx.html