简易的Java网络爬虫小案例(二):获取b站视频的详细点赞、收藏和硬币数
Java爬虫案例之获取视频详细点赞、收藏等参数
最近是b站的11周年庆,相信不少朋友也看过了这个特映视频《喜相逢》了吧?看完视频给个三连支持,衷心祝愿小破站越来越好!不过在长按完大拇指后,看着这极高的点赞和硬币,你是不是有种想了解它的实际数目的好奇心?哈哈,那么咱就立马操练起来,用编程来拿到这些数据吧!
一、运用开发者工具
首先打开b站的首页,搜索框内键入“喜相逢”。
(哦豁又有新背景图了,所以。。?)
上篇文章 有讲到如何用开发者工具,这里不再赘述。进入视频界面并记得打开开发者工具刷新一下。漫长的筛查过后,只要你英语好一点,有耐心一点,就能左右对比到我们所要的信息了:
注意:如果你自己多找几个视频,会发现每个视频界面对应的referer的不一样的,所以后面代码里构造请求对象时这部分不能写死。
二、代码实现
1、准备:
安装okhttp库,能实现简单快速的http调用:
<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.1.0</version>
</dependency>
导包:
// 异常
import java.io.IOException;
// http请求
import okhttp3.Request;
import okhttp3.Call;
import okhttp3.OkHttpClient;
// json数据解析
import com.alibaba.fastjson.JSON;
import java.util.Map;
2、获得文本数据:
不同于上一次下载图片,这次我们只要求把json格式的文本数据获取来,并进行解析得到我们要的信息即可。
// 上文提到过referer是动态的,所以我们作为参数传入
public String getContent(String url, String referer) {// 先实例化一个 OkHttpClientOkHttpClient client = new OkHttpClient();// 实例化 Request,定义请求的各种参数;header添加以模拟浏览器访问环境Request request = new Request.Builder().url(url).addHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36").addHeader("Referer", referer)//.addHeader("Host","www.bilibili.com").build();String result = null;// 调用可能失败并抛出异常,需进行捕捉try {// 构建调用对象Call call = client.newCall(request);// 请求执行后的结果Response rep = call.execute();// 获取状态码int code = rep.code();System.out.println("状态码为"+ code);// 获取调用结果,并返回字符串内容的方法(适用请求字符文本文件)result = rep.body().string();} catch (IOException e) {System.out.println("request" + url + " error . ");e.printStackTrace();}return result;}
3、main函数打印
import com.alibaba.fastjson.JSON;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;import java.io.IOException;
import java.util.Map;public class TextFileAsker {public String getContent(String url, String referer) { ... }public static void main(String[] args) {TextFileAsker asker = new TextFileAsker();String url = "https://api.bilibili.com/x/web-interface/archive/stat?aid=626032318";String referer = "https://www.bilibili.com/video/BV1yt4y1X75B";// 获得文本数据String content = asker.getContent(url, referer);// 根据开发者工具里Preview里的数据结构进行json解析Map contentObj = JSON.parseObject(content, Map.class);Map data = (Map)contentObj.get("data");// 依次提取所需信息String like = data.get("like").toString();String coin = data.get("coin").toString();String view = data.get("view").toString();String share = data.get("share").toString();String favorite = data.get("favorite").toString();System.out.println("播放量 点赞 收藏 硬币 转发");System.out.println(view + " " +like + " " +favorite+ " " +coin + " " +share + " ");}}
运行结果如下:
(就写了点博客的时间,又多了好多播放量)
以上便是关于视频点赞数等一些参数的详细数据获得方式了,对于类似的情况,都可以自己在开发者工具里进行仔细搜索,细心一点,耐心一点,你总能让它出现在自己的程序输出里的。
简易的Java网络爬虫小案例(二):获取b站视频的详细点赞、收藏和硬币数相关推荐
- Java网络爬虫小案例(详细版)
有bug:修改了<scope>test</scope>后,在控制台还是不能显示日志信息,没找到解决办法 配置了log4j.properties,控制台没有显示日志信息_连胜是我 ...
- Java网络爬虫实战案例一
紧接我们上次的问题,如何获取服务器发送的资源,保存到本地?上一篇文章见java网络爬虫核心原理. 一.Java IO流三分游(input,output) 我们知道计算机是用来处理数据的.所有的程序 ...
- java ssm小案例_简易的SSM框架整合小案例
简易的SSM框架整合小案例 一.创建一个web工程的maven项目 1.项目名随便起 2.选择好你的maven路径,然后finish 二.配置pom.xml文件 org.springframework ...
- Java网络爬虫该如何学习
文章目录 引言 怎么入门网络爬虫 课程特色 学完本课程能收获什么 引言 互联网以及移动技术的飞速发展,使得全球数据量呈现前所未有的爆炸式增长态势.例如,用户在互联网上的搜索数据.交易数据.评论数据.社 ...
- Java网络爬虫学习记录(请求基础篇)
目录 个人实验遇见错误集: 一.javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX ...
- 学 Java 网络爬虫,需要哪些基础知识?
说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬 ...
- java 网络爬虫 正则表达式_【干货】Java网络爬虫基础知识
原标题:[干货]Java网络爬虫基础知识 引言 Java 网络爬虫具有很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分.例如,著名的网络爬虫工具 Nutch 便是采用 Java 开发,该工具以 ...
- 第三十六期:学 Java 网络爬虫,需要哪些基础知识?
说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬 ...
- Java Web应用小案例:猜数小游戏
Java Web应用小案例:猜数小游戏 文章目录 一.演示Python版猜数游戏 二.JSP版猜数游戏程序运行效果
最新文章
- Apache的Commons Lang和BeanUtils
- 老实工作没有其他收入,为什么还要补缴个税?
- 英国政府发布5G政策文件
- python爬虫搜特定内容的论文_Python 爬虫爬取指定博客的所有文章
- Unity教程:如何使用枚举来帮助简化游戏开发
- mysql 文件放网络盘_MySQL InnoDB的磁盘文件及落盘机制
- Datawhale-零基础入门NLP-新闻文本分类Task04
- hive 如何将数组转成字符串_hive详细笔记(八)-Hive之列转行和行转列(附带讲解视频 )...
- 百度启用Baidu.co.jp域名,有利于其在日本推广
- CentOS7环境下在/离线安装GCC与GCC-C++
- Redis基础知识 之——发布/订阅
- 简述主成分分析法的基本步骤_主成分分析的基本步骤
- 台式计算机用什么电源线,电脑电源线有什么规格
- win10常用快捷键合集
- RabbitMQ:四种ExChange用法
- 当moba遇上麻将——刀塔自走棋
- OFFICE 您正试图运行的函数包含有宏或需要宏语言的解决方法
- 巧用友盟UShare、ULink玩转裂变营销
- Python 人工智能入门须知
- 面向对象;构造函数;原型对象