基于java实现bilibili视频爬虫
实验概述
【实验项目名称】
Implementing a Bilibili video webcrawler
【实验目的】
- Understand HTTP requests, responses, and redirections.
- Use apache-httpclient to make up requests and decompose responses.
- Use jsoup to traverse between and inside HTML tags.
- Know SQL grouping and sorting.
- Use Maven to manage project dependencies.
【实验环境(使用的软件)】
Fiddler,IntelliJ IDEA
实验内容
1.爬取网页信息
打开Fiddler,并打开www.bilibili.com,点击任一版块,爬取信息
找到视频列表所对应的的包,是一个json文件,找到他的Headers,用于模拟连接。
之后可以看到这个json对应的内容,包括视频的av号,标题,作者,所属版块号,版块名称,硬币数,收藏数等,弄清楚这个json对象的格式,用于使用java HttpClient 模拟访问时解析json对象。
2.java爬取网页信息
新建项目homework_5,使用maven导入Apache的HttpClient包,建立项目依赖。
根据助教的教程,使用HttpClient模拟浏览器发送get请求,根据之前获取到的Headers建立模拟请求。网页响应后可以使用HttpEntity得到一串字符串,这个字符串中包含我们需要解析的json对象。
在这里我当时没有找到解析json的JSONObject方法,所以这里我使用了Google的Gson包。这个包虽然可以解析json,但只能解析标准格式的json对象,并且需要一个实体类来映射解析结果,而我们获取到的不是标准的json对象,在这里我使用了切割字符串的方法,将从网页上爬取到的字符串切割成一个个json对象,之后使用Gson进行映射解析。
3.数据存入数据库
解析完之后,将数据存入数据库。数据库中包括版块号tid,版块名tname,av号,标题title,作者author,硬币数coin,收藏数favorite。
在这里我在存入数据库之前没有筛选每个版块的前三名,而是将爬取到的数据全部存入数据库,在数据库中根据收藏数进行分组排序,选出每个版块的前三名。
数据库中存了78万条记录。
4.下载视频
得到视频的av号后,就可以从网页上下载视频了。www.biyezuopin.vip
这里使用www.ibilibili.com/video/av…地址,根据av号查找到ibilibili的网页,使用jsoup解析该网页,得到下载链接。
此为下载链接,找到这个链接之后,使用java的io包从对应的链接下载视频。
查看本地,已下载完成。
【结果】
- 使用HttpClient爬取网页成功,每个版块爬取了1000页,数据库中一共存储了78万条记录。
- 从数据库中排序选出前三名,根据视频的av号,使用jsoup获取下载链接成功,调用java的IO可以下载到本地。
- 用maven添加依赖也基本掌握。
【小结】
这学期的JAVA实验真的收获很大。
这次实验简单了解了网页爬虫的原理,也算是入了爬虫的门,虽然只是很简单的基础。
之前实验中也学习了数据库的基础知识,也算是有了一点数据库的使用能力,在这次实验中也有相应的收获,当数据库中的数据非常多时,怎样可以提高查询速度也是需要思考的问题,我自己也算是想到了一些方法。
总之,这次的实验收获很大。
基于java实现bilibili视频爬虫相关推荐
- 基于Java毕业设计弹幕视频网站源码+系统+mysql+lw文档+部署软件
基于Java毕业设计弹幕视频网站源码+系统+mysql+lw文档+部署软件 基于Java毕业设计弹幕视频网站源码+系统+mysql+lw文档+部署软件 开发语言:Java语言 开发软件:idea ec ...
- 基于Java毕业设计学习类视频网源码+系统+mysql+lw文档+部署软件
基于Java毕业设计学习类视频网源码+系统+mysql+lw文档+部署软件 基于Java毕业设计学习类视频网源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...
- 基于R的Bilibili视频数据建模及分析——预处理篇
基于R的Bilibili视频数据建模及分析--预处理篇 文章目录 基于R的Bilibili视频数据建模及分析--预处理篇 0.写在前面 1.项目介绍 1.1 项目背景 1.2 数据来源 1.3 数据集 ...
- Bilibili视频爬虫
一直想爬取BiliBili的视频,无奈一直没有去研究一下. 最近,在旭哥的指点之下,用了Fiddler抓包,抓到了一直期待的视频包,完成了下载. 下面写一下我做这个爬虫的过程. 相关依赖 :Fidd ...
- 基于 Java 的短视频实战项目
作为Java新人,什么样的简历能受到大厂面试官青睐? 面试的时候你能否把控面试节奏与方向? 看似是两个问题,其实都要归咎于一点,就是:你是否有谈资. 很多新人可能就会觉得,自己刚入行,在有经验的人面前 ...
- 基于JAVA解决淘宝爬虫限制
不仅仅限于java 前言 验证码识别 工具 分析 编码 数据演示 后记 前言 以前做过淘客开发,那时候高佣api很少,高佣的办法就是查询商品模拟转链为高佣,但是后来淘宝慢慢禁止了爬虫一直弹验证码,后来 ...
- Java编写抓取用户信息代码_[代码全屏查看]-一个基于JAVA的知乎爬虫,抓取知乎用户基本信息...
[1].[代码] [Java]代码 作者:卧颜沉默 链接:https://www.zhihu.com/question/36909173/answer/97643000 来源:知乎 著作权归作者所有. ...
- 开题报告:基于java在线教育视频学习点播系统 毕业设计论文开题报告模板
开发操作系统:windows10 + 4G内存 + 500G 开发环境:JDK1.8 + Tomcat8 开发语言:Java 开发框架:springboot 模板引擎:Thymeleaf 开发工具:I ...
- python爬取bilibili数据_如何使用Python爬取bilibili视频(详细教程)
Python爬取bilibili视频 摘要 为了解决PC端的bilibili无法下载视频的问题,使用python语言可以实现一个能够爬取bilibili某个视频资源(不包括会员视频)的程序.采用整个视 ...
最新文章
- sql优化中in关键字_工作中遇到的一个SQL优化问题与解决方案
- 【心情】最近实在是太忙了,没有心情写东西!
- sina邮箱的发件服务器拒绝,新浪帮助-常见问题
- 简单创建两个线程,交替输出内容
- c++ map 析构函数_面向偷懒的编程 - C/C++项目中使用Go的分布式系统库
- SpringBoot PageOffice 在线编辑 (完整版、有源码)
- chromecast投屏_利用谷歌Chromecast,3个简单的步骤教你将手机投屏到电视上
- Navigating to current location (/login) is not allowed
- 使用Easyexcel对Excel进行读写操作
- java fxml教程_openjfx(javaFX)完整学习指南(教程)
- 猜拳游戏(基于TCP socket的编程)
- 2017cad光标大小怎么调_cad十字光标怎么调大-调整cad十字光标大小的方法 - 河东软件园...
- 找素数,分解质因数(python)
- 聚类评价指标(轮廓系数 Silhouette coefficient)
- vijosP1285 佳佳的魔法药水
- 使用css绘制弹幕,实例详解CSS3 实现弹幕
- 计算机自检后反复重启 主引导,电脑开机停留在商标界面-电脑一开机就停留在主板标志界面,进不了bios设置,重启也一样,怎么办?...
- 考研小作文万能模板——17篇
- gps和惯性组合matlab程序,北航卡尔曼滤波与组合导航 第三次作业 SINS/GPS组合动态实验...
- 破局 | STO 会是P2P不良资产包化解难的救星吗?