Java实现爬取哔哩哔哩视频信息程序

一,说明

爬取b站视频信息时,如果直接用URL打开流进行爬取网站源码时,会发现Java程序上一片空白(既然大家看这篇文章了,想必大家页遇到了这个问题),说明无法直接爬取,接下来我会讲解怎么爬取b站。

二,程序演示

视频地址:https://www.bilibili.com/video/BV1Kb411W75N/
(注意视频地址一定要是这个格式的,因为本程序还没通用性,大家也可以改改啊啊啊)
在这里插入图片描述
在这里插入图片描述

程序代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class text04_bilibili {
public static void main(String[] args) {
	String urlstr1;
	String urlstr2;
	String text;
	String name;
	String time;
	int a=0;
	String bvid;
	Pattern p1;
	Matcher m1;
	Pattern p2;
	Matcher m2;
	//分享出来的b站视频的链接
	urlstr1 = "https://www.bilibili.com/video/BV1Kb411W75N/";
	//bvid就是 BV1Kb411W75N 这串字符  下面这行代码对取视频的bvid没有通用型,读者可以自己改进一下,现在只能处理b站视频  分享  处获得的链接
	bvid = urlstr1.substring(urlstr1.indexOf("BV"),urlstr1.lastIndexOf("/"));
	//b站视频信息存放在https://api.bilibili.com/x/player/pagelist?bvid=BV1Kb411W75N这个链接里 或者https://api.bilibili.com/x/player/pagelist?aid=48144058这个链接里
	//我会在文章里讲解bvid和aid在哪获取(不用研究bvid和aid是啥,就把他当作名字就行)  本程序利用bvid操作
	urlstr2 = "https://api.bilibili.com/x/player/pagelist?bvid="+bvid;
	//获得网站源码
	text = text04_bilibili.getURLText(urlstr2, "utf-8");
	p1 = Pattern.compile("part\":\"[\\s\\S]+?\"");
	m1 = p1.matcher(text);
	p2 = Pattern.compile("duration\":[\\s\\S]+?,");
	m2 = p2.matcher(text);
	while(m1.find()) {
		a++;
			if(m2.find()) {
				//此处获得视频名称
				name = m1.group().substring(7,m1.group().length()-1);
				//此处获得播放时长
				time = m2.group().substring(10,m2.group().length()-1);
				//此处这个视频播放链接就是https://www.bilibili.com/video/BV1Kb411W75N?p=第几集
				System.out.println("编号:"+a+"  "+name+"  <---->  "+"视频长度: "+Integer.parseInt(time)/60+"分钟"+Integer.parseInt(time)%60+"秒"+"   播放链接:https://www.bilibili.com/video/"+bvid+"?p="+a);
			}
	}
	System.out.println("\n\n总共:"+a+"集");
}
public static String getURLText(String urlstr,String charset) {
	String temp = "";
	StringBuffer sb = new StringBuffer();
	try {
		URL url = new URL(urlstr);
		BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),Charset.forName(charset)));
		while((temp=br.readLine())!=null) {
			sb.append(temp);
		}
	} catch (MalformedURLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}catch (IOException e) {
		// TODO: handle exception
	}
	return sb.toString();
}
}

三,爬取信息需要的网址在哪找到的

1,bvid的那个网址在哪获取

我把network里的所有网址都试了一遍才找到!!!
大家如果想找一下可以按我图中操作,https://api.bilibili.com/x/player/pagelist?bvid=BV1Kb411W75N
在这里插入图片描述

2,aid在哪获取

在这里插入图片描述

四,结束

哪里不会的可以评论区问我哈

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值