获取粉丝数需要知道API调用接口

怎么获得调用的API接口呢?

以罗翔老师的bilibili账号为例子。

本人用的Firefox浏览器,其他浏览器操作与Firefox类似,在此只是提供获取API的途径,不想了解可以直接下滑找到API连接复制即可。

在此界面按下F12,打开开发调试工具。

选择网络,有的浏览器显示network

刷新当前浏览器界面

在这个界面可以看到所以的网络请求

需要什么功能可以挨着点开看看。

本次只需要获取粉丝数

只需要找到这个请求即可

请求方式是GET

直接双击会跳转页面

单击之后选择响应(response)也可。

看到follower2000多万 ~ 嗯! 没错了,这就是想要的API

所需要的就是这一条了

https://api.bilibili.com/x/relation/stat?vmid=517327498&jsonp=jsonp

后面&jsonp=jsonp是解决浏览器跨域数据访问的,咱这要粉丝数用不上


最后的最后

https://api.bilibili.com/x/relation/stat?vmid=你的UID

只需要用esp32向这个地址发送请求即可获得粉丝数啦~

需要用到的函数

ArduinoJson库有三个

函数解释:ESP32超详细学习记录:JSON解析(利用ArduinoJson库)_喜暖知寒的博客-CSDN博客

DynamicJsonDocument doc(capacity);
deserializeJson(doc, json);String nameStr = doc["name"].as();//返回字符串形式
int numberInt = doc["number"].as();//返回整数的形式

HTTPClient库用到四个

函数解释:

ESP32超详细学习记录:对HTTP进行请求(简单)_喜暖知寒的博客-CSDN博客

HTTPClient.begin(String url);
HTTPClient.GET();
HTTPClient.getString();
HTTPClient.end();

对获取bilibili粉丝相关功能单独放在了文件内

文件夹内包含文件:main.ino、GitFans.cpp 、GitFans.h 、UserWiFi.cpp 、UserWiFi.h

GitFans.cpp

#include "GitFans.h"
HTTPClient http;    //创建HTTPClient 实例
String url_bilibiliFans = "";    //资源定位符long Fansnumber = 0;    //粉丝数String GitFans::GitURL(String uid)    //拼接资源定位符,获取API链接
{url_bilibiliFans =  "https://api.bilibili.com/x/relation/stat?vmid=";url_bilibiliFans += uid;return url_bilibiliFans;
}void GitFans::ParseFans(String url)
{  DynamicJsonDocument doc(1024);  //分配内存http.begin(url);    //请求网址int httpGet = http.GET();    //获得服务器状态码if(httpGet > 0){Serial.printf("HTTPGET is %d",httpGet);    //打印服务器状态码if(httpGet == HTTP_CODE_OK)    //判断是否请求成功{String json = http.getString();    //获得响应体信息Serial.println(json);    //打印响应体信息deserializeJson(doc, json);    //Json解析Fansnumber = doc["data"]["follower"];    //获得粉丝数,整形}else{Serial.printf("ERROR1!!");}}else{Serial.printf("ERROR2!!");}http.end();
}

GitFans.h

#ifndef __GITFANS_H__
#define __GITFANS_H__#include <ArduinoJson.h>    //引用两个需要的库
#include <HTTPClient.h>extern long Fansnumber;class GitFans
{
public:void ParseFans(String url);String GitURL(String uid);private:};
#endif

main.ino

#include "UserWiFi.h"
#include "GitFans.h"const char * ID = "NATCAP_0E35";
const char * PASSWORD = "88888888";String UID = "517327498";String FansURL;UserWiFi userwifi;
GitFans gitfans;void setup()
{Serial.begin(115200);FansURL = gitfans.GitURL(UID);    //获得APIuserwifi.WiFiConnect(ID,PASSWORD);}void loop()
{Serial.println("连接成功!");gitfans.ParseFans(FansURL);    //处理粉丝数据Serial.println(Fansnumber);    //打印粉丝数delay(5000);
}

其余为WIFI连接相关函数,参考ESP32超详细学习记录:wifi连接最基础方法_喜暖知寒的博客-CSDN博客

简化为一个函数

(已验证!可直接复制编译)

#include <WiFi.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>const char * ID = "NATCAP_0E35";
const char * PASSWORD = "88888888";//fans相关参数
String UID = "517327498";
String FansURL = "0";
String url_bilibiliFans = "";
long Fansnumber = 0;/* 创建实例 */
HTTPClient http;String GitURL(String uid)
{url_bilibiliFans =  "https://api.bilibili.com/x/relation/stat?vmid=";url_bilibiliFans += uid;return url_bilibiliFans;
}void ParseFans(String url)
{  DynamicJsonDocument doc(1024); //分配内存,动态http.begin(url);int httpGet = http.GET();if(httpGet > 0){Serial.printf("HTTPGET is %d",httpGet);if(httpGet == HTTP_CODE_OK){String json = http.getString();Serial.println(json);deserializeJson(doc, json);Fansnumber = doc["data"]["follower"];  }else{Serial.printf("ERROR1!!");}}else{Serial.printf("ERROR2!!");}http.end();
}void setup()
{Serial.begin(115200);FansURL = GitURL(UID);//==================wifi连接==================Serial.println("WiFi:");Serial.println(ID);Serial.println("PASSWORLD:");Serial.println(PASSWORD);WiFi.begin(ID,PASSWORD);while(WiFi.status()!=WL_CONNECTED){delay(500);Serial.println("正在连接...");}Serial.println("连接成功!");//==================wifi连接==================
}void loop()
{Serial.println("连接成功!");ParseFans(FansURL);Serial.println(Fansnumber);delay(5000);
}

其实不难

最终串口打印数据

粉丝数22525863 ~  大佬就是大佬

读天气、新闻其他的之类的都可以由这个框架更改的。

一些错误信息判断功能都没有添加上去,要是应用下来还是需要添加的。

ESP32超详细学习记录:获取B站粉丝数相关推荐

  1. ESP32超详细学习记录:wifi配网,AP配网,浏览器配网,无线配网

    不想了解代码实现,可直接到代码部分copy!ESP32亲测可用. 使用设备ESP32开发板(ESP32-WROOM-32) 搜了好多别人写的资料,很多都是copy+copy,也没有什么解释.啪,代码放 ...

  2. ESP32超详细学习记录:NTP同步时间

    本来想从开源项目找找灵感的,但是!那些代码真烂!!!!! 开源项目免不了的就是抄抄抄代码,想知道 NTP 是怎么实现的还要读那一堆烂代码,烦! 就算开源项目能怎么样!不还是一样的  烂!代!码! 自己 ...

  3. ESP32超详细学习记录:wifi连接最基础方法

    2022年05月09日 ESP32连接WiFi 关键函数(抄自官方库.h文件) //WiFiSTA.h wl_status_t begin(const char* wpa2_ssid, wpa2_au ...

  4. Redis超详细学习

    Redis超详细学习 一.Redis入门 Redis是什么? Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内 ...

  5. Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)

    所有示例使用的数据表均为Oracle提供的SQL基础数据表(t_employees.sql dept.sql emp.sql salgrade.sql) 熟练掌握多多练习即可达到完成后端开发所需具备的 ...

  6. 【超全】Go语言超详细学习知识体系

    Go语言超详细学习知识体系 Go编程入门 基础语法 环境安装 下载地址 https://golang.google.cn/dl/ GOPATH.GOROOT两个关键环境变量 基础结构 包的概念 程序执 ...

  7. stm32怎么加载字库_收藏 | STM32单片机超详细学习汇总资料(二)

    点击"蓝字"关注我们 3110月 收藏 | STM32单片机超详细学习汇总资料(一) ◆41.DMA仲裁器分为软件和硬件两种.软件部分分为4个等级,分别是很高优先级.高优先级.中等 ...

  8. 计算机假期计划内容,2019寒假计划,超详细学习计划表

    [导语]愉快的寒假已经开始了,基于拓宽知识面的目的,按时学习生活,做事有规律,度过一个快乐充实有意义的寒假,因此制定一个合理的寒假学习计划对初中孩子们是非常有必要的.下面为您制定具体计划如下.以下内容 ...

  9. 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)

    Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...

  10. 陈宝林《最优化理论与算法》超详细学习笔记 (八)————最优性条件

    陈宝林<最优化理论与算法>超详细学习笔记 (八)----最优性条件 无约束问题的极值条件 必要条件 二阶充分条件 充要条件 约束极值问题的最优性条件 不等式约束的一阶最优性条件 无约束问题 ...

最新文章

  1. 装饰器模式(Decorator)
  2. 【Spring】Spring boot的ApplicationContextAware 实现获取service
  3. 华为hcie题库有多少题?华为认证hcie面试需要注意什么?
  4. Python爬虫系列之得物小程序data算法
  5. 阿里云服务器安装Nginx
  6. java 二进制加减_二进制加法Java实现
  7. 卖奥特曼卡片年入十亿:赚钱这事,你还得相信光的力量
  8. matlab 创建网格图和曲面图
  9. Keep it simple stupid
  10. VUE启动报错:Error: The project seems to require yarn but it‘s not installed
  11. JS的Date函数汇总
  12. 计算机软件考试考几天,【软考考试时间是多久?软考时间有多长?】- 环球网校...
  13. 小米公司2021秋招面试题目整理
  14. html 自动 浏览器窗口,一种html文件实现显示浏览器窗口内容的方法
  15. JDK的最新版的下载与安装
  16. ​今年36岁,北邮硕士毕业,待过字节,阿里,最近被裁员,只能去外包。。。...
  17. k-均值聚类算法_聚类算法-K-均值算法
  18. JAVA_树状表格分页(layUI、treeTable.js)
  19. Hibernate对象的状态和映射
  20. 天天红单app下载安装_天天红单苹果app下载

热门文章

  1. 金蝶星空支持mysql吗_金蝶云星空K3 CLOUD SQL 数据库优化
  2. 计算机应用基础windows10 +office2016题库及答案
  3. 有道词典“网络已断开”的解决办法
  4. kron matlab_使用kron来实现repmat, repelem的功能
  5. 统计检验P值代表什么及统计显著性检验方法原理
  6. antd-vue 划上表格内容显示气泡框及提示内容
  7. matlab 删除plot上的图,matlab删除部分图例
  8. 工业摄像头传感器尺寸与像元尺寸的关系
  9. union并不绝对比or的执行效率高
  10. sas mysql乱码_在SAS中如何解决中文乱码问题