如何通过python调用新浪微博的API

作者&投稿:宿范 (若有异议请与网页底部的电邮联系)
如何通过python调用新浪微博的API~

1:安装python(这个不多说啦)
2:下载新浪微博SDK的python包,解压为weibopy目录
(http://open.t.sina.com.cn/wiki/index.php/SDK)
3:申请AppKey,详见(http://open.t.sina.com.cn/wiki/index.php/FAQ)

流程:

1:通过oAuth认证,详见(http://open.t.sina.com.cn/wiki/index.php/Oauth)
按我的理解简化如下:
用户在新浪微博给的页面输入账号密码,然后微博给应用一个PIN码,这样应用通过PIN码才有权限访问该用户的信息,而应用在整个过程中是接触不到密码的,所以用户觉得很安全,后果很满意
2:获得认证之后,就可以使用微博SDK提供的API获得信息啦
3:如果想设计web或者客户端应用的话,那就继续加个GUI好啦(未完成)

代码:
#!/usr/bin/pythonimport webbrowserfrom weibopy.auth import OAuthHandlerfrom weibopy.api import APIAppKey = '2525355147'AppSecret = '2e2c7bcdfc362eace266d1f2bf83fe6b'my_auth = OAuthHandler(AppKey , AppSecret)webbrowser.open(my_auth.get_authorization_url())verifier = raw_input('PIN: ').strip()my_auth.get_access_token(verifier)my_api = API(my_auth)for comment in my_api.mentions(): object = comment id = object.__getattribute__("id") text = object.__getattribute__("text") print str(id) + " : " + text

每个人都可以通过新浪微博开发者平台注册自己的应用,我注册的是站内应用。
注册后会为每个应用分配唯一的app key 和 app secret,这在上文提到的授权机制中需要用到,相当与每个应用的标示吧。

1.下载SDK

使用python调用API的话,首先要去下一个Python的SDK,sinaweibopy

连接地址在此: http://michaelliao.github.com/sinaweibopy/

可以使用pip很快的导入,github连接里的wiki也有入门的使用方法,很容易看懂。

2.理解新浪微博的授权机制

在调用API之前,首先要搞懂什么叫OAuth 2,即新浪微博的授权机制,

连接在此: http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E

3.在新浪微博注册应用

每个人都可以通过新浪微博开发者平台注册自己的应用,我注册的是站内应用。注册后会为每个应用分配唯一的app key 和 app secret,这在上文提到的授权机制中需要用到,相当与每个应用的标示吧。

至此,我们可以尝试写代码调用新浪微博的API啦。

4.简单的调用API实例

参考了往上很多资料和文档,写了一个简单的调用过程。

# _*_ coding: utf-8 _*_
from weibo import APIClient
import webbrowser
APP_KEY = ”
APP_SECRET = ”
CALLBACK_URL = ”
#这个是设置回调地址,必须与那个”高级信息“里的一致
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
url = client.get_authorize_url()
# TODO: redirect to url
#print url
webbrowser.open_new(url)
# 获取URL参数code:
code = ‘2fc0b2f5d2985db832fa01fee6bd9316‘
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)

print client.friendships.friends.bilateral.ids.get(uid = 12345678)

通过以上的代码,我实现了调用相互关注API的调用,即查找与某个id的用户相互关注的人的列表。

其中,APP_KEY和APP_SECRET就是前文中分配给每个应用的信息,回调地址在每个应用的高级信息中可以看到,需要自己设置,不过随便设置一下就好

比较恶心的是code的获取,我一开始看sinaweibopy的文档的时候也没弄懂是什么意思,如上面的代码所示,url得到的是一个授权的网址,我们通过

webbrowser.open_new(url)
这行代码打开浏览器跳转到授权的界面,然后观察所在界面的网址,会显示大概如下一样的格式:

http://apps.weibo.com/sayarywei?code=505e3efcdad1f421d147db7276aabdbe

看到了吗?
问号后面有一个code=……的一个东西,把等号后面的字符串拷贝下来赋给code就可以了,但是每次运行程序是code不是一成不变的,也就是说每次都
要有这么一个手动获取的过程,我觉得很麻烦,以后自己再研究一下,实现自动获取code就好了。如果能有哪位大神告诉我,感激不尽~

好了,得到正确的code之后就可以完成授权认证,也就可以调用微博的API啦,至于如何在Python下调用,我拷贝一下sinaweibopy上的介绍:

首先查看新浪微博API文档,例如:

API:statuses/user_timeline

请求格式:GET

请求参数:

source:string,采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值为应用的AppKey?。

access_token:string,采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得。

uid:int64,需要查询的用户ID。

screen_name:string,需要查询的用户昵称。

(其它可选参数略)

调用方法:将API的“/”变为“.”,根据请求格式是GET或POST,调用get ()或post()并传入关键字参数,但不包括source和access_token参数:

r = client.statuses.user_timeline.get(uid=123456)
for st in r.statuses:
print st.text

若为POST调用,则示例代码如下:

r = client.statuses.update.post(status=u'测试OAuth 2.0发微博')

若需要上传文件,传入file-like object参数,示例代码如下:

f = open('/Users/michael/test.png', 'rb')
r = client.statuses.upload.post(status=u'测试OAuth 2.0带图片发微博', pic=f)
f.close() # APIClient不会自动关闭文件,需要手动关闭

请注意:上传的文件必须是file-like object,不能是str,因为无法区分一个str是文件还是字段。可以通过StringIO把一个str包装成file-like object。

1.下载SDK

使用python调用API的话,首先要去下一个Python的SDK,sinaweibopy

连接地址在此: http://michaelliao.github.com/sinaweibopy/

可以使用pip很快的导入,github连接里的wiki也有入门的使用方法,很容易看懂。

2.理解新浪微博的授权机制

在调用API之前,首先要搞懂什么叫OAuth 2,即新浪微博的授权机制,

连接在此: http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E

3.在新浪微博注册应用

每个人都可以通过新浪微博开发者平台注册自己的应用,我注册的是站内应用。注册后会为每个应用分配唯一的app key 和 app secret,这在上文提到的授权机制中需要用到,相当与每个应用的标示吧。

至此,我们可以尝试写代码调用新浪微博的API啦。

4.简单的调用API实例

参考了往上很多资料和文档,写了一个简单的调用过程。

# _*_ coding: utf-8 _*_
from weibo import APIClient
import webbrowser


APP_KEY = ''
APP_SECRET = ''
CALLBACK_URL = ''
#这个是设置回调地址,必须与那个”高级信息“里的一致
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
url = client.get_authorize_url()
# TODO: redirect to url
#print url
webbrowser.open_new(url)
# 获取URL参数code:
code = '2fc0b2f5d2985db832fa01fee6bd9316'
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)

print client.friendships.friends.bilateral.ids.get(uid = 12345678)

通过以上的代码,我实现了调用相互关注API的调用,即查找与某个id的用户相互关注的人的列表。

其中,APP_KEY和APP_SECRET就是前文中分配给每个应用的信息,回调地址在每个应用的高级信息中可以看到,需要自己设置,不过随便设置一下就好

比较恶心的是code的获取,我一开始看sinaweibopy的文档的时候也没弄懂是什么意思,如上面的代码所示,url得到的是一个授权的网址,我们通过

webbrowser.open_new(url)

这行代码打开浏览器跳转到授权的界面,然后观察所在界面的网址,会显示大概如下一样的格式:

http://apps.weibo.com/sayarywei?code=505e3efcdad1f421d147db7276aabdbe

看到了吗? 问号后面有一个code=……的一个东西,把等号后面的字符串拷贝下来赋给code就可以了,但是每次运行程序是code不是一成不变的,也就是说每次都要有这么一个手动获取的过程,我觉得很麻烦,以后自己再研究一下,实现自动获取code就好了。如果能有哪位大神告诉我,感激不尽~

好了,得到正确的code之后就可以完成授权认证,也就可以调用微博的API啦,至于如何在Python下调用,我拷贝一下sinaweibopy上的介绍:

首先查看新浪微博API文档,例如:

API:statuses/user_timeline

请求格式:GET

请求参数:

source:string,采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值为应用的AppKey?。

access_token:string,采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得。

uid:int64,需要查询的用户ID。

screen_name:string,需要查询的用户昵称。

(其它可选参数略)

调用方法:将API的“/”变为“.”,根据请求格式是GET或POST,调用get ()或post()并传入关键字参数,但不包括source和access_token参数:

r = client.statuses.user_timeline.get(uid=123456)
for st in r.statuses:
    print st.text

若为POST调用,则示例代码如下:

r = client.statuses.update.post(status=u'测试OAuth 2.0发微博')

若需要上传文件,传入file-like object参数,示例代码如下:

f = open('/Users/michael/test.png', 'rb')
r = client.statuses.upload.post(status=u'测试OAuth 2.0带图片发微博', pic=f)
f.close() # APIClient不会自动关闭文件,需要手动关闭

请注意:上传的文件必须是file-like object,不能是str,因为无法区分一个str是文件还是字段。可以通过StringIO把一个str包装成file-like object

希望我的回答对你有帮助,望采纳。




如何利用Python爬取网易云音乐热门评论
有一种比较好的办法是通过网络爬虫,即编写计算机程序伪装成用户去获得想要的数据。利用计算机的高效,我们可以轻松快速地获取数据。关于爬虫那么该如何写一个爬虫呢?有很多种语言都可以写爬虫,比如Java,php,python 等,我个人比较喜欢使用python。因为python不仅有着内置的功能强大的网络库,还有诸多优秀的第三方库,别人直接...

python怎么学习?
python是全能语言,社区庞大,有太多的库和框架。你只需要找到合适的工具来实现想法,省去了造轮子的精力。coder可以写尽可能少的代码来实现同等的功能。“人生苦短,我用python”是至理名言。如果实现一个中等业务复杂度的项目,在相同的时间要求内,用java实现要4-5个码农的话,用python实现也许只需要...

零基础学Python应该学习哪些入门知识
3)命令行工具cd切换到所要安装的包的目录,找到setup.py文件,然后输入python setup.py install 2.4.2 不用pip或easy_install,直接打开cmd,敲pip install rsa。3 提升阶段需要恒心和耐力。完成入门阶段的基础学习之后,常会陷入一个瓶颈期,通过看教程很难进一步提高编程水平。这时候,需要的是反复练...

如何使用python将大量数据导出到Excel中的小技巧
2.第二步,哈哈,没有啦,废话不说了,直接上代码,ps,代码中包含xlwt和openpyxl的两个实现版本。 (3)扩展阅读:通过查阅资料,发现网上众说纷纭,总结起来有如下几点: python Excel相关的操作的module lib有两组,一组是xlrd、xlwt、xlutils,另一组是openpyxl, 但是前一组(xlrd,xlwt)比较老,只能处理由Excel 97-2003 ...

python怎么学习
1、零基础学编程,用python入门是个不错的选择,虽然国内基本上还是以c语言作为入门开发语言,但在国外,已经有比较多的学校使用python作为入门编程语言。2、找到合适的入门书籍仔细阅读有关Python的书籍,好记心不如烂不同,一定要做笔记,过后回顾笔记。书上给出的练习,一定要做,并且争取全部弄懂。书...

如何自学 Python
对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python这门语言,还需要面临“编程”的一些普遍问题,比如:· 从零开始,不知道从何入手,找了本编程教材发现第二章开始就看不懂了 · 缺少计算机基础知识,被一些教程略过的“常识性”问题卡住 · 遇到问题不知道怎么寻找解决方案 ·...

如何系统地自学 Python
对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python这门语言,还需要面临“编程”的一些普遍问题,比如:从零开始,不知道从何入手,找了本编程教材发现第二章开始就看不懂了;缺少计算机基础知识,被一些教程略过的“常识性”问题卡住;遇到问题不知道怎么寻找解决方案;看懂语法之后不知道拿来做什么,...

求教自学python如何入门
多媒体应用、pymo引擎、爬虫编写、机器学习、人工智能等等。Python的应用特别广,中国现在的人才缺口超过100万。如果你想要专业的学习Python开发,更多需要的是付出时间和精力,一般在2w左右。应该根据自己的实际需求去实地看一下,先好好试听之后,再选择适合自己的。只要努力学到真东西,前途自然不会差。

精通Python网络爬虫之网络爬虫学习路线
1、选择一款合适的编程语言 事实上,Python、PHP、JAVA等常见的语言都可以用于编写网络爬虫,你首先需要选择一款合适的编程语言,这些编程语言各有优势,可以根据习惯进行选择。在此笔者推荐使用Python进行爬虫项目的编写,其优点是:简洁、掌握难度低。2、掌握Python的一些基础爬虫模块 当然,在进行这一步之前...

如何学python
通过学习语法,掌握python中的关键字语法,函数语法,数学表达式等等3)学完了基本语法后,就可以进行互动式学习了。python具备很好的交互学习模式,对于书本上的例子我们可以通过交互平台进行操练,通过练习加深印象,达到学习掌握的目的。4)通过以上三个步骤的学习后,我们大致掌握了python的常用方法、关键字用法以及函数语法等。

瑞丽市18963729859: 如何通过python调用新浪微博的API来爬取数据 -
余哄普贺: 与Twitter相比,新浪微博做得更好的地方是直接提供了SDK(Twitter貌似只有第三方的SDK).而我自然是用Python SDK,一个只有几十k的玩意. 接着进入exanples文件夹(新浪这英文水平,不提了…),打开oauthSetTokenUpdate.py文件就是...

瑞丽市18963729859: 如何通过python调用新浪微博的API -
余哄普贺: 每个人都可以通过新浪微博开发者平台注册自己的应用,我注册的是站内应用.注册后会为每个应用分配唯一的app key 和 app secret,这在上文提到的授权机制中需要用到,相当与每个应用的标示吧.

瑞丽市18963729859: 如何使用python根据关键词抓取微博 -
余哄普贺: 当你通过模拟登陆进入微博界面的时候,尝试如何用python的模块去提交query,然后通过beautifulsoup或者是httpparse来获取内容信息.当然,自己学习正则表达式来获取也是可以的.

瑞丽市18963729859: 怎样用python爬新浪微博大V所有数据 -
余哄普贺: 先上结论,通过公开的api如果想爬到某大v的所有数据,需要满足以下两个条件:1、在你的爬虫开始运行时,该大v的所有微博发布量没有超过回溯查询的上限,新浪是2000,twitter是3200.2、爬虫程序必须不间断运行.新浪微博的api基本...

瑞丽市18963729859: python如何抓取新浪微博的微博内容 -
余哄普贺: 基于文本文档(Markdown) 设想好需要的基本需要的表、字段、类型;使用 Rails Migration 随着功能的开发逐步创建表;随着细节功能的开发、需求,逐步增加字段,删除字段,或者调整字段类型;第一个 Release 的时候清理 Migrations 合并成一个; 随着后期的改动,逐步增加、修改、删除字段或表.基本上我的所有项目都是这么搞的,这和项目是否复杂无关.

瑞丽市18963729859: 在Python调用新浪微博的用户标签接口时,如何只提取返回数据里面的中文? -
余哄普贺: 1. 用正则.2. 如果单纯的是返回字典,那么可以利用json

瑞丽市18963729859: Python中如何转换新浪微博返回的时间格式?我用Python调
余哄普贺: import time a = "Tue Apr 22 21:05:23 0800 2014" b = a.repacle(" 0800 ","")#去掉时区 c = time.strptime(b,"%Y-%m-%d %H:%M:%S")#转换为时间元组 d = time.strftime("%Y-%m-%d %H:%M:%S",c) #转换成需求格式 结果 d = '2014-04-22 21:05:23'

瑞丽市18963729859: Python怎么映射微博昵称和id号,想爬新浪微博数据. -
余哄普贺: 不清楚你问的是哪个环节的映射.如果要在线通过昵称找id,可以通过新浪微博搜索昵称,从昵称列表里找你需要的用户.如果是已有的昵称和id列表,可以在代码里做一个字典、列表之类的数据结构,实现两者之间的相互对照查找.

瑞丽市18963729859: python调用微博API接口报错cannot import name APIClient
余哄普贺: 我记得Python里面有一些传输协议.Http:超文本传输协议.FTP:文件传输协议.Python的发邮件的协议叫做MTP.使用方法:建立一个协议的客户端和服务器,两方用特定的代码完成对话.因为之前没有用过,细节我就不知道了.希望对你有用.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网