前言
该工具可用于或许并关键词筛选b站视频选集的标题。
适用于如
这样的b站视频选集。
后续功能将会慢慢更新
所需第三方包
1、hutool
链接: 官网地址
2、jsoup
链接: 下载地址
一、界面设计
1、idea中jFrameDesigner安装
安装教程:链接: jFrameDesigner安装.
2、界面设计
使用了了一个列表,一个勾选框,两个标签,两个编辑框,两个按钮
二、获取选集信息
1.b站视频网页分析
获取源码发现跟别的并太一样,需要的数据是在script里面的
遍历打印出来还想我们所需要的数据在第六个script中,即索引为5
2.添加按钮事件监听
代码如下:
items_search.addActionListener(e -> items_searchActionPerformed(e));
// 回调方法中调用items_get方法
private void items_getActionPerformed(ActionEvent e) {
// TODO add your code here
items_get();
}
点击“获取”按钮调用的方法:
// 这是点击“获取”按钮调用的方法
private void items_get(){
// TODO add your code here
new Thread(new Runnable() {
@Override
public void run() {
Connection.Response html= null;
String veido_url = video_url_edit.getText().trim();
if (!veido_url.equals("")){
try {
// 获取视频网页源码字符串
html = Jsoup.connect(video_url_edit.getText().trim()).execute();
// jsoup包解析字符串
Document doc = Jsoup.parse(html.body());
// 获取选集信息数据所在字符串
Elements bodys = doc.select("script");
Element element = bodys.get(5);
// 转化了json对象(用的是hutool工具包)
String text = HtmlUtil.cleanHtmlTag(element.toString().trim());
String i = "=";
JSONObject jsonObject = new JSONObject(text.trim().split(i, 2)[1]);
// 以json方式获取到选集数据
Object vedio_items = jsonObject.getByPath("videoData.pages");
JSONArray vedio_items_json_array = new JSONArray(vedio_items);
Iterable<JSONObject> vedio_items_json_iter = vedio_items_json_array.jsonIter();
// 遍历添加到items_list列表中
for (JSONObject iter : vedio_items_json_iter){
stringDefaultListModel.addElement(iter.getObj("part").toString().trim());
}
items_list.setModel(stringDefaultListModel);
} catch (IOException ex) {
ex.printStackTrace();
}
}else {
JOptionPane.showMessageDialog(null, "视频连接为空");
}
}
}).start();
}
总结
获取选集信息功能的难点是对b站页面源码的分析,找出所需数据所在的位置,然后再取出