【转载】使用微博API接口获取数据

article/2025/10/19 22:02:01

巧妇难为无米之炊。

数据获取是数据分析的前提。许多网站会通过API接口向第三方开放网站的部分数据。新浪微博也不例外。你可以查看微博API列表。

商业数据API为(如place/nearby_timeline/biz)为收费接口,若想要调用这一类接口,需要额外支付一定的费用并完成相应的接入工作,可以参考商业数据API接入指南。

本文将对如何使用微博API做初步性的介绍,以获得基本概念和认识,方便之后的深入理解。

文章目录

  • step1: 使用python调用微博API,首先要下载python的SDK,即sinaweibopy
  • step2: 理解新浪微博的授权机制,即OAuth 2
  • step3: 在微博开放平台创建自己的应用
  • step4: python代码实现
  • step5: 完整代码

step1: 使用python调用微博API,首先要下载python的SDK,即sinaweibopy

sinaweibopypython专用的支持微博APIOAuth 2客户端,无依赖,100%纯Py,单个文件,代码简洁,运行可靠,也是新浪微博官方推荐的Python SDK

你可以通过pip直接安装:

pip install sinaweibopy

SDK是什么?SDK的英文全称是software development kit(软件开发工具包)。简单来讲,它是一个代码库,包含着可复用的代码,这些代码用来开发你的应用。你写一个app的代码时,不需要重复去写诸如draw text on the actual screen这样的代码。利用SDK可以帮你做到这些。总之,所有这些代码库和其他一些工具,就构成了我们所说的SDK

step2: 理解新浪微博的授权机制,即OAuth 2

API的调用是需要获取用户身份认证的(用户授权)。目前微博开放平台用户身份鉴权主要采用的是OAuth2.0

关于OAuth2.0协议的授权流程可以参考下面的流程图,其中Client指第三方应用(即我们在第三步创建的自己的应用),Resource Owner指用户,Authorization Server是我们的授权服务器,Resource ServerAPI服务器。

从流程图中可以看到,为调用API服务器内容,需要将access token告诉API服务器;而access token是在用户授权后由新浪(授权服务器)返回给我们创建的应用的;为完成用户授权,我们的应用首先要将授权页面给到用户(authorization request)。

在这里插入图片描述

用户授权后浏览器的URL大概长这样:https://api.weibo.com/oauth2/default.html?code=0acebd79dc4cdd04879699e803af038a

我们需要向新浪授权服务器提交code后面的字符串才能获得access token。相当于告诉新浪服务器我们的应用已经得到用户的授权,现在可以访问用户的数据了,于是授权服务器给到我们通行证(access token),就可以从API服务器获取微博数据了。

理解了上面的机制,我们才知道如何编写代码来调用API。

step3: 在微博开放平台创建自己的应用

现在我们来创建自己的应用。创建应用的目的是为了获得app keyapp secret

我们通过微连接来创建移动应用。你也可以创建其它类型的应用。应用创建完成后,会分配唯一的app keyapp secret。你可以在“我的应用-应用信息-基本信息”中查询,这将在授权中用到。注意:不需要提交审核,需要的只是app key和app secret

如果是站外网页应用或移动客户端应用,出于安全性考虑,需要在平台网站填写redirect_url(授权回调页),才能使用OAuth2.0。填写地址为“我的应用>应用信息>高级信息”。这里,我们将授权回调页面和取消授权回调页均设置为默认回调页:https://api.weibo.com/oauth2/default.html

在这里插入图片描述

step4: python代码实现

首先,导入需要的模块:

from weibo import APIClient
import webbrowser   #python内置的包,支持对浏览器进行操作

利用微博SDK创建我们的应用:

APP_KEY = '123456'
APP_SECRET = 'abc123xyz456'
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'      #回调授权页面,用户完成授权后返回的页面
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)

得到授权页面的url(https://api.weibo.com/oauth2/authorize?redirect_uri=https%3A//api.weibo.com/oauth2/default.html&response_type=code&client_id=729983294)。利用webbrowser打开这个url,这会会唤起浏览器,打开https://api.weibo.com/oauth2/default.html?code=abc123

url=client.get_authorize_url() #得到授权页面的url
webbrowser.open_new(url)  #打开这个url

在这里插入图片描述

用户完成授权后的url长这样:https://api.weibo.com/oauth2/default.html?code=abc123。我们需要code=后面的内容。

code = input('输入url中code后面的内容后按回车键:')

利用code得到access token

r = client.request_access_token(code)
access_token = r.access_token # 新浪(授权服务器)返回的token
expires_in = r.expires_in

可以打印r看看里面有什么东西:

print(r)
# {'access_token': u'abcqwe123', 'expires': 1662109746, 'expires_in': 1662109746, 'uid': u'2164581421'}

设置得到的access_token,就可以直接调用API了:

client.set_access_token(access_token, expires_in)

输出最新的公共微博:

print(client.statuses.public_timeline.get())

返回的具体内容可以查看微博API文档。

例如,我们可以输出用户的昵称、简介、位置和微博:

statuses = client.statuses.public_timeline.get().statuses
l = len(statuses)for i in range(0,l):print(u'昵称:'+statuses[i]['user']['screen_name'])print(u'简介:'+statuses[i]['user']['description'])print(u'位置:'+statuses[i]['user']['location'])print(u'微博:'+statuses[i]['text'])

在这里插入图片描述

step5: 完整代码

from weibo import APIClient
import webbrowser   #python内置的包,支持对浏览器进行操作APP_KEY = '123456'
APP_SECRET = 'abc123xyz456'
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'      #回调授权页面,用户完成授权后返回的页面
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)url=client.get_authorize_url() #得到授权页面的url
webbrowser.open_new(url)  #打开这个urlcode = input('输入url中code后面的内容后按回车键:')r = client.request_access_token(code)
access_token = r.access_token # 新浪(授权服务器)返回的token
expires_in = r.expires_inclient.set_access_token(access_token, expires_in)
print(client.statuses.public_timeline.get())statuses = client.statuses.public_timeline.get().statuses
l = len(statuses)for i in range(0,l):print(u'昵称:'+statuses[i]['user']['screen_name'])print(u'简介:'+statuses[i]['user']['description'])print(u'位置:'+statuses[i]['user']['location'])print(u'微博:'+statuses[i]['text'])

参考资料:

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

作者:xiangzhendong
链接:https://www.jianshu.com/p/2d7fd22462b3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


http://chatgpt.dhexx.cn/article/kZwye7SA.shtml

相关文章

微博官方API使用方法【全流程教学】

微博官方API使用方法【全流程教学】 微博开发者身份认证创建自己的应用新应用的相关配置基本信息高级信息 微博认证流程OAuth2.0认证(核心步骤)Access Token授权有效期接口调用Demo(以评论接口为例) 微博开发者身份认证 访问微博开放平台,登录自己微博账…

一文教会你JDK8的函数式编程

JDK8的1个新特性就是支持函数式接口(Functional Interface)。 函数式接口就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 函数式接口可以被隐式转换为Lambda表达式。 我们也可以自行定义函数式接口,如: FunctionalInterface interf…

Modern C++ 学习笔记——C++函数式编程

往期精彩: Modern C 学习笔记——易用性改进篇Modern C 学习笔记 —— 右值、移动篇Modern C 学习笔记 —— 智能指针篇Modern C 学习笔记 —— lambda表达式篇Modern C 学习笔记 —— C面向对象编程Modern C 学习笔记 —— C函数式编程 Modern C 学习笔记——C函数…

java8函数式编程实例

什么是函数式编程 函数式编程是java8的一大特色,也就是将函数作为一个参数传递给指定方法。别人传的要么是基本数据类型,要么就是地址引用 ,我们要穿一个“动作”。 Stream 说到函数式编程,就不得不提及Stream,Stre…

Scala函数式编程

一、函数式编程定义: Scala是一门既面向对象,又面向过程的语言。在Scala中,函数与类、对象地位是一样,所以说scala的面向过程其实就重在针对函数的编程 了,所以称之为函数式编程 在Scala中定义函数需要使用 def 关键…

什么是函数式编程?

当我们说起函数式编程来说,我们会看到如下函数式编程的长相: 函数式编程的三大特性: immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修…

python函数式编程

大家好 这里还还还是长弓 今天我们来讲讲python中的函数式编程 目录 函数式编程 高阶函数 map reduce filter sorted 返回函数 闭包 nonlocal使用 匿名函数lambda 装饰器 偏函数 函数式编程 有些同学疑惑了,我们已经学了函数,为什么还要学这…

函数式编程

Functional Programming 什么是函数式编程 函数式编程的思维方式:把显示世界的事务和事物之间的联系抽象到程序世界(对运算过程进行抽象) 函数式编程中的函数指的数学中的函数即映射关系,输入的值对应一个输出的值,…

appium环境搭建python_appium环境搭建python

1,appium是开源的移动端自动化测试框架;2,appium可以测试原生的、混合的、以及移动端的web项目;3,appium可以测试ios,android应用(当然了,还有firefox os);4,appium是跨平…

Windows下Appium环境搭建小结

文章目录 Windows下Appium环境搭建小结需要安装的软件1. JDK下载安装/配置 2. Android SDK3. Maven下载安装/配置 4. Appium下载安装/配置 5. Eclipse TestNG 和 ADT 插件下载安装一条龙配置1、先配置Maven 创建一个项目 Windows下Appium环境搭建小结 本文需要读者已安装了Ec…

Mac端Python+Appium环境搭建

一、安装java sdk java安装:下载完直接安装jdk1.8 二、 安装Android Studio 1.下载安装 下载地址:https://www.androiddevtools.cn/# 2.安装完成后,打开SDK Manager 三、JAVA SDK和Android SDK环境变量配置 1.终端输入:ls…

安卓移动端appium环境搭建流程

安卓移动端appium环境搭建流程 基本步骤: 安装Node.js 安装JDK,及配置环境变量 安装SDK,及配置环境变量 安装Appium桌面版本(建议安装GitHub的最新版) python中pip下载Appium-Python-Client 下载allure-2.13.8并加入环境变量 管理员身份运行appiu…

pythonappium环境搭建_python+appium 环境搭建

最近学习了一下python语言,听说appium是做app的ui层的自动化的一个很好的框架,也是很多人在学习的框架,所以很感兴趣,也特意来学习一下,下面是我学习过程的一些心得和总结,希望对大家有所帮助。 一、环境搭…

Appium环境搭建(集齐Windows和MacOS的宝藏内容)

Appium环境搭建目录 Windows系统环境下安装Node.js安装JDK及环境变量配置添加环境变量 安装SDK添加环境变量 安装Appium可通过三种方法安装安装 **appium-doctor** MacOS系统环境下安装xcode安装依赖安装WebDriverAgent运行WebDriverAgent windows 安装 tidevice常用的tidevice…

mac appium环境搭建

appium环境的搭建其实也不复杂,主要是配置的比较多,只是在配置的过程中,根据当时的机器配置会遇到一些具体问题,一个个解决就可以了。 安装下面这篇文章搭建就可以了 超详细的Mac下appium环境搭建 配置java环境有问题,…

pythonappium环境搭建_python appium环境搭建

1,appium是开源的移动端自动化测试框架; 2,appium可以测试原生的、混合的、以及移动端的web项目; 3,appium可以测试ios,android应用(当然了,还有firefox os)&#xff1…

Appium 环境搭建

一、下载并安装appium客户端(勿装1.15.1版本,1.15.1版本很多坑) 进入appium官网http://appium.io/下载版本,将下载好的版本按照步骤进行安装 Appium-Python-Client第三方包 pip3 install Appium-Python-Client -i https://pypi.tuna.tsinghua.edu.cn/simple 二…

appium环境搭建全套

环境 1 Node.js 2 Appium 3 Appium-desktop 4 Appium-Python-Client 5 Python 6 JDK 7 Andriod SDK 8 Appium-doctor 一、安装Node.js 下载地址:https://nodejs.org/en/download/releases/ 注意:Appium版本是1.7.2,则选择的No…

Appium环境搭建

一、Appium框架原理 1.介绍 appium是一个移动端的自动化测试框架,可用于测试原生应用,移动网页应用和混合应用,支持iOS和Android。 2.原理 appium可以理解为一个c/s架构软件,在pc端安装的appium server端,通过appi…

Appium环境搭建教程

最近打算研究开发一个手机的自动化小工具,奈何在这方面自己是一个小白,于是开始针对手机进行研究。由于主要使用Appium这个工具,因此本文主要讲解Appium环境的搭建,并结合自己的实践讲一讲需要避过的坑。 一、 安装Node.js Node.…