基于java实现bilibili视频爬虫
實驗概述
【實驗項目名稱】
Implementing a Bilibili video webcrawler【實驗目的】
【實驗環境(使用的軟件)】
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包從對應的鏈接下載視頻。
查看本地,已下載完成。
【結果】
【小結】
這學期的JAVA實驗真的收獲很大。
這次實驗簡單了解了網頁爬蟲的原理,也算是入了爬蟲的門,雖然只是很簡單的基礎。
之前實驗中也學習了數據庫的基礎知識,也算是有了一點數據庫的使用能力,在這次實驗中也有相應的收獲,當數據庫中的數據非常多時,怎樣可以提高查詢速度也是需要思考的問題,我自己也算是想到了一些方法。
總之,這次的實驗收獲很大。
總結
以上是生活随笔為你收集整理的基于java实现bilibili视频爬虫的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-09-21KNN——鸢尾花
- 下一篇: 西欧5800计算器坐标正反算程序