网站调用新浪微博内容(新浪微博API新特点与百度地图API相比(图))

优采云 发布时间: 2022-03-17 19:14

  网站调用新浪微博内容(新浪微博API新特点与百度地图API相比(图))

  文章目录

  查看 API 使用流程

  在上一篇文章API Python编程简介:(一)使用百度地图API查地理坐标,通过百度地图API的使用,我们看到API调用的大致流程是:生成API规则 格式化url -> 通过urllib读取url中的数据 -> 解析json格式的数据 接下来开始研究新浪微博API的使用吧!

  准备好工作了

  新浪微博开放平台是使用新浪微博API的平台。

  

  使用微博账号登录平台后,即可申请成为开发者,创建新应用后将获得唯一的App Key和App Secret。(注:申请不需要提交审核,只要创建一个新的申请,就会分配Key和Secret。)这两个信息也可以在“我的申请/申请信息/基本信息”中找到. 该页面还有“我的申请/申请信息/高级信息”项,点击进入并设置OAuth2.0授权回调页面的相关信息。如果不知道填什么,可以设置为默认回调Page:。后面需要这三条信息,请复制保存到文档中。

  微博API新功能

  新浪微博API与百度地图API相比,增加了OAuth2.0协议进行用户认证和授权。这里只是简单说明一下(有兴趣的同学可以参考网上文档*敏*感*词*):通过该协议,第三方应用可以获取用户授权,然后使用该License从授权服务器获取token,用于来自 API 服务器的后续查询 验证数据时。

  

  这个验证过程增加了 url 生成的复杂性。好在网站上已经有廖雪峰老师提供的SDK工具包:sinaweibopy(廖老师的github地址好像改名了,网上很多旧链接都失效了,这是新的有效链接),但是这个程序是基于Python2环境编写的,Python3的一些系统库做了改动,程序调用时经常报错。作为 Python 初学者,重写程序以适应 Python3 环境无疑是困难的。幸运的是,有一位大神完成了这项工作。感谢 owolf 为 Python3 重写的 SDK:sinweibopy3。我用过,运行正常。你可以下载它。在这里,我也推荐一下owolf的文章

  简单的例子

  介绍一下新浪微博API的使用过程,为新生提供参考。

  1.参数设置

  import sinaweibopy3

import webbrowser

import json

APP_KEY =' 填入你的App Key'

APP_SECRET=' 填入你的App Secret'

REDIRECT_URL =' 填入你的授权回调页'

  笔记:

  这里说一下我的粗心造成的一个bug,也提醒大家。当我第一次运行程序时,每次都会收到“重定向地址不匹配”错误消息:

  微博账号登录出错!授权第三方应用出错,请联系第三方应用开​​发者:XXX或稍后重试。

  错误代码:21322 重定向地址不匹配

  网上找了解决方法,设置回调页,但是我之前的步骤已经设置好了,为什么还是这个问题?后来在一篇文章文章中看到,回调页面的地址应该和程序中的REDIRECT_URL一致。想到了程序例子,用http:开头,我填的时候看到同一个地址,没有变化,而网站是https:开头,一个's的区别',当时我还以为是地址,没想到差别这么大!

  2.OAuth2.0 验证生成的url

  client = sinaweibopy3.APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=REDIRECT_URL)

url = client.get_authorize_url()

webbrowser.open_new(url)

result = client.request_access_token(input("please input code: "))

client.set_access_token(result.access_token, result.expires_in)

  注意:这是调用sinweibopy3实现用户授权->在OAuth2.0中获取Token的过程。当程序运行到client.request_access_token时,会弹出输入提示“请输入密码:”,询问密码?这是什么意思?打开浏览器会看到出现OAuth2.0验证回调页面。地址栏中的“code=”后面有一串字符。这就是我们想要的Token信息。复制它,粘贴它并输入它,然后程序继续。跑步。

  3.从 API 读取数据

  运行以下代码读取公众微博数据并显示结果。

  result=client.public_timeline()

print(json.dumps(result,indent=2,ensure_ascii=False))

  通过查看数据结构,可以提取特定信息。比如下面的代码可以用来输出用户的微博昵称、位置、最新微博的文字。

  number=result["total_number"]

print(number,"users:")

for u in result["statuses"]:

print(u["user"]["screen_name"])

print(u["user"]["location"])

print(u["text"])

  先进的

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线