实验概述

【实验项目名称】

Implementing a Bilibili video webcrawler

【实验目的】

  1. Understand HTTP requests, responses, and redirections.
  2. Use apache-httpclient to make up requests and decompose responses.
  3. Use jsoup to traverse between and inside HTML tags.
  4. Know SQL grouping and sorting.
  5. 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包从对应的链接下载视频。

查看本地,已下载完成。

【结果】

  1. 使用HttpClient爬取网页成功,每个版块爬取了1000页,数据库中一共存储了78万条记录。
  2. 从数据库中排序选出前三名,根据视频的av号,使用jsoup获取下载链接成功,调用java的IO可以下载到本地。
  3. 用maven添加依赖也基本掌握。

【小结】

这学期的JAVA实验真的收获很大。

这次实验简单了解了网页爬虫的原理,也算是入了爬虫的门,虽然只是很简单的基础。

之前实验中也学习了数据库的基础知识,也算是有了一点数据库的使用能力,在这次实验中也有相应的收获,当数据库中的数据非常多时,怎样可以提高查询速度也是需要思考的问题,我自己也算是想到了一些方法。

总之,这次的实验收获很大。

基于java实现bilibili视频爬虫相关推荐

  1. 基于Java毕业设计弹幕视频网站源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计弹幕视频网站源码+系统+mysql+lw文档+部署软件 基于Java毕业设计弹幕视频网站源码+系统+mysql+lw文档+部署软件 开发语言:Java语言 开发软件:idea ec ...

  2. 基于Java毕业设计学习类视频网源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计学习类视频网源码+系统+mysql+lw文档+部署软件 基于Java毕业设计学习类视频网源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  3. 基于R的Bilibili视频数据建模及分析——预处理篇

    基于R的Bilibili视频数据建模及分析--预处理篇 文章目录 基于R的Bilibili视频数据建模及分析--预处理篇 0.写在前面 1.项目介绍 1.1 项目背景 1.2 数据来源 1.3 数据集 ...

  4. Bilibili视频爬虫

    一直想爬取BiliBili的视频,无奈一直没有去研究一下. 最近,在旭哥的指点之下,用了Fiddler抓包,抓到了一直期待的视频包,完成了下载. 下面写一下我做这个爬虫的过程. 相关依赖  :Fidd ...

  5. 基于 Java 的短视频实战项目

    作为Java新人,什么样的简历能受到大厂面试官青睐? 面试的时候你能否把控面试节奏与方向? 看似是两个问题,其实都要归咎于一点,就是:你是否有谈资. 很多新人可能就会觉得,自己刚入行,在有经验的人面前 ...

  6. 基于JAVA解决淘宝爬虫限制

    不仅仅限于java 前言 验证码识别 工具 分析 编码 数据演示 后记 前言 以前做过淘客开发,那时候高佣api很少,高佣的办法就是查询商品模拟转链为高佣,但是后来淘宝慢慢禁止了爬虫一直弹验证码,后来 ...

  7. Java编写抓取用户信息代码_[代码全屏查看]-一个基于JAVA的知乎爬虫,抓取知乎用户基本信息...

    [1].[代码] [Java]代码 作者:卧颜沉默 链接:https://www.zhihu.com/question/36909173/answer/97643000 来源:知乎 著作权归作者所有. ...

  8. 开题报告:基于java在线教育视频学习点播系统 毕业设计论文开题报告模板

    开发操作系统:windows10 + 4G内存 + 500G 开发环境:JDK1.8 + Tomcat8 开发语言:Java 开发框架:springboot 模板引擎:Thymeleaf 开发工具:I ...

  9. python爬取bilibili数据_如何使用Python爬取bilibili视频(详细教程)

    Python爬取bilibili视频 摘要 为了解决PC端的bilibili无法下载视频的问题,使用python语言可以实现一个能够爬取bilibili某个视频资源(不包括会员视频)的程序.采用整个视 ...

最新文章

  1. sql优化中in关键字_工作中遇到的一个SQL优化问题与解决方案
  2. 【心情】最近实在是太忙了,没有心情写东西!
  3. sina邮箱的发件服务器拒绝,新浪帮助-常见问题
  4. 简单创建两个线程,交替输出内容
  5. c++ map 析构函数_面向偷懒的编程 - C/C++项目中使用Go的分布式系统库
  6. SpringBoot PageOffice 在线编辑 (完整版、有源码)
  7. chromecast投屏_利用谷歌Chromecast,3个简单的步骤教你将手机投屏到电视上
  8. Navigating to current location (/login) is not allowed
  9. 使用Easyexcel对Excel进行读写操作
  10. java fxml教程_openjfx(javaFX)完整学习指南(教程)
  11. 猜拳游戏(基于TCP socket的编程)
  12. 2017cad光标大小怎么调_cad十字光标怎么调大-调整cad十字光标大小的方法 - 河东软件园...
  13. 找素数,分解质因数(python)
  14. 聚类评价指标(轮廓系数 Silhouette coefficient)
  15. vijosP1285 佳佳的魔法药水
  16. 使用css绘制弹幕,实例详解CSS3 实现弹幕
  17. 计算机自检后反复重启 主引导,电脑开机停留在商标界面-电脑一开机就停留在主板标志界面,进不了bios设置,重启也一样,怎么办?...
  18. 考研小作文万能模板——17篇
  19. gps和惯性组合matlab程序,北航卡尔曼滤波与组合导航 第三次作业 SINS/GPS组合动态实验...
  20. 破局 | STO 会是P2P不良资产包化解难的救星吗?

热门文章

  1. 〖产品思维训练白宝书 - 核心竞争力篇⑤〗- 产品经理核心竞争力解读之如何培养创造力
  2. Linux驱动 | OLED显示模块驱动(SPI)
  3. ThreadLocal的一些想法
  4. Mac Os微信多开小助手安装教程
  5. idead 1099端口被占用 解决
  6. 谷歌多账户登陆_如何一次登录多个Google帐户
  7. 存在即合理-开发语言
  8. cisco IOS,nexus和Arista 的vrrp
  9. 20221208英语学习
  10. 社保二季度亲自加仓三股遭套