热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python:新浪微博API初试

{想在微博上抓点数据进行分析,费了一天多的时间,才终于找到点头绪,整理一下。}目录:一注册创建应用获取认证和授权二新浪微博pythonsdk下载和安装三简




{想在微博上抓点数据进行分析,费了一天多的时间,才终于找到点头绪,整理一下。}


 目录:


一 注册创建应用获取认证和授权


二 新浪微博python sdk 下载和安装


三 简单Demo获取用户关注好友并统计性别比例


 


一 注册创建应用获取认证和授权


要想使用新浪的API获取数据,首先需要获得认证和授权(其实就是App Key 和 App Secret这两个的值),而这个貌似必须要创建应用才能获得,即使你并不想真的开发应用,只是想爬些数据而已。


1 申请成为开发者


1.1 打开新浪开放平台首页,点击【管理中心】



 


1.2  进入开发者信息页面,点击【现在就去完善】



 


1.3 按照流程填写基本信息、进行邮箱验证之后,就可以创建应用了,如果只是爬点数据的话并不需要完善所有信息提交审核



 


 


 


2  创建应用获取App Key和 App Secret


2.1 如果已经成功申请为开发者后,再打开新浪开放平台开发页 ,如下图所示,可以点击【创建应用】


 


 


2.2  这时会弹出一个页面让你选择创建应用的类型,参考别的博客的意见和自己的经验(我最初创建的是站内应用,但是发现没有填回调页的地方),建议选择【其他】


 


 


2.3  填写应用的基本信息,点击【创建】即可。因为只是用新浪的API抓些数据,因此信息都是随便写的。



 


2.4  创建应用后,所有的应用将会出现在【管理中心】-【我的应用】里,点击应用名,在应用信息的基本信息中,将会看到所需要的App Key 和App Secret:



 


2.5  编辑回调页(callback url),在应用信息的高级信息里编辑。似乎只要是能正常打开公开访问的页面(注意一定要可以正常打开公开访问)都可以,我参考的一篇博客回调页写的就是百度首页(http://www.baidu.com),但我用百度页调程序时却报错,最后将回调页改成新浪默认的就可以了,所以还是建议使用新浪提供的默认回调页https://api.weibo.com/oauth2/default.html



到了这一步应用生成就算完成了,有了App Key,App Secret 和 回调页 这三个值,就可以使用新浪API进行开发了


 


二 新浪微博python sdk 下载和安装


下载官方建议的SDK http://michaelliao.github.io/sinaweibopy/


下载完成后将里面的weibo.py复制到你的应用程序同一目录下,或者复制到 lib/site-package下。这样你的应用就可以调用sdk了。(此方法我未验证,我是直接安装的)


也可以直接在线安装,官网提供的方法是使用pip工具安装该工具包:pip install sinaweibopy


我的python中只有easy_install,查了一下资料说 pip 比 easy_install 更好一点,就顺手安装了pip:easy_install pip


然后我又用上面的pip命令安装SDK,但不知为什么一直报错,后来抱着试一试的心态直接用easy_install安装吧:easy_install sinaweibopy


意外的顺利成功!


虽然安装成功,还是又下载了一下SDK包,主要是为了看看都有哪些函数,及其用法。


 


三 简单的Demo 获取用户关注好友并统计性别比例


 


#-*- encoding:utf8 -*-

import webbrowser
import json
from weibo import APIClient

APP_KEY = 'XXXXXX' # your app key
APP_SECRET = 'XXXXXXXXXXXX' # your app secrect
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html' # your callback url

client = APIClient(APP_KEY,APP_SECRET,CALLBACK_URL)

# 访问授权页,让用户授权
authorize_url = client.get_authorize_url(redirect_uri = CALLBACK_URL)

#打开浏览器,需手动找到地址栏中URL里的code字段
webbrowser.open(authorize_url)

# 手动输入新浪返回的code
code = raw_input("input the code: ").strip()

# 获得用户授权
request = client.request_access_token(code) # 请求access_token
access_token = request.access_token # 新浪返回的token,类似abc123xyz456
expires_in = request.expires_in # token过期的UNIX时间

print 'Successfully get access_token:',access_token
print 'Successfully get expires_in:',expires_in

client.set_access_token(access_token, expires_in)

# 获取用户所关注的好友,并统计好友性别
screen_name=u"XXX某某某" # 输入该用户昵称,注意本代码的编码是utf8,否则昵称为中文的时候会报错
resFriends = []
nextCursor = -1

while nextCursor != 0:
friends = client.get.friendships__friends(screen_name=screen_name,count=200,cursor=nextCursor)
nextCursor = friends["next_cursor"]
for friend in friends["users"]:
resFriends.append( (friend["screen_name"],friend["gender"]) )


m = 0 # male
f = 0 # female
n = 0 # others
for i in resFriends:
if i[1] == 'm':
m = m+1
elif i[1] == 'f':
f = f+1

else:
n = n+1

print 'The total number of the friends:',len(resFriends)
print 'The number of male friends:',m
print 'The number of famale friends:',f
print 'The number of others:',n


 直接运行该程序,首先会弹出回调页面给出code码,需要手动复制该code码,在python运行界面输入该code码:


 


运行结果如下所示:



 


参考资料


Auth2.0微博应用范例


使用python调用新浪微博API的小经历


使用python进行新浪微博应用开发


使用python sdk 调用sina weibo API(OAuth2.0)


新浪微博API文档


新浪微博错误代码说明




转载请注明出处 http://blog.csdn.net/minenki/article/details/8836293






推荐阅读
  • 如何更换Anaconda和pip的国内镜像源
    本文详细介绍了如何通过国内多个知名镜像站(如北京外国语大学、中国科学技术大学、阿里巴巴等)更换Anaconda和pip的源,以提高软件包的下载速度和安装效率。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • BeautifulSoup4 是一个功能强大的HTML和XML解析库,它能够帮助开发者轻松地从网页中提取信息。本文将介绍BeautifulSoup4的基本功能、安装方法、与其他解析工具的对比以及简单的使用示例。 ... [详细]
  • 本文介绍如何使用Python编程语言合并字典中具有相同集合值的键,并提供两种实现方法。 ... [详细]
  • 择要:Fundebug的JavaScript毛病监控插件同步支撑Vue.js异步毛病监控。Vue.js从降生至今已5年,尤大在本年2月份宣布了严重更新,即Vue2.6。更新包含新增 ... [详细]
  • 转载自:https:blog.csdn.netu013948858articledetails77800663【python】pip安装报错UnicodeDecode ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • SQLite是一种轻量级的关系型数据库管理系统,尽管体积小巧,却能支持高达2TB的数据库容量,每个数据库以单个文件形式存储。本文将详细介绍SQLite在Android开发中的应用,包括其数据存储机制、事务处理方式及数据类型的动态特性。 ... [详细]
  • 字符、字符串和文本的处理之Char类型
    .NetFramework中处理字符和字符串的主要有以下这么几个类:(1)、System.Char类一基础字符串处理类(2)、System.String类一处理不可变的字符串(一经 ... [详细]
  • 本文详细介绍了在Mac操作系统中使用Python连接MySQL数据库的方法,包括常见的错误处理及解决方案。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 在使用 Ant Design 的 SubMenu 组件时,遇到无法读取 'isRootMenu' 属性的 TypeError。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 本文详细介绍了如何在本地环境中安装配置Frida及其服务器组件,以及如何通过Frida进行基本的应用程序动态分析,包括获取应用版本和加载的类信息。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
author-avatar
纽约纽约MrWaNg
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有