Java小工具:B站视频选集搜索器--获取选集信息


前言

该工具可用于或许并关键词筛选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站页面源码的分析,找出所需数据所在的位置,然后再取出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PareCycest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值