2021-03-06

使用jsoup操作读取html标签


添加需要的jar包

 

创建ReadHtml类


import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;
import java.util.*;



public class ReadHtml {

    private final Document document;

    public ReadHtml(Document document) {
        this.document = document;
    }

    //    获取div标签个数
    public int getDiv() {
        Elements ee = document.getElementsByTag("div");
        return ee.size();
    }

    //    获取li标签个数
    public int getLi() {
        Elements ee = document.getElementsByTag("li");
        return ee.size();
    }

    //    获取总个数
    public int getAll() {
        Elements all = document.getAllElements();
        return all.size();
    }


    // 获取所有标签以及对应出现次数
    public Map<String, Integer> findAll() {
        Elements all = document.select("*");
//        Elements all1 = document.getAllElements();
//        System.out.println(all==all1);  flase
        Map<String, Integer> map = new HashMap<>();

        for (Element element : all) {
            if (!map.containsKey(element.tagName())) {
                map.put(element.tagName(),document.select(element.tagName()).size());
            }
//                map.put(element.tagName(),1);
//            } else
//                map.put(element.tagName(), map.get(element.tagName()) + 1);
        }
        return map;
    }

    public static void main(String[] args) throws Exception {
        //4:用java解析bdqn.html,分析每个标签出现的次数
        // 然后输出,类似
        //  div 13次
        //  li  20次
        //(存入Map,放入新元素的判断是否已存在,不存在,加入;存在,数量加1)
        Document document = Jsoup.parse(new File("I:\\novel\\htmlStudy\\src\\cn\\ruiruo\\zuoye1\\bdqn.html"), "utf-8");
//        Document document = Jsoup.connect("https://www.ahbdqn.com/?bd-555-qn&sdclkid=ALos152lArDlA6DiAOA&b_scene_zt=1&renqun_youhua=1903381&bd_vid=8837774786426156861").get();
        ReadHtml rr = new ReadHtml(document);
        int ss = rr.getDiv();
        System.out.println("div:" + ss + "次");

        int dd = rr.getLi();
        System.out.println("li:" + dd + "次");

        System.out.println("共有标签" + rr.getAll() + "个");

        System.out.println("---------------------------------------");

        Map<String,Integer> map = rr.findAll();


        Set<String> set = map.keySet();

        for (String s:set) {
            System.out.println(s + "标签有:" + map.get(s) + "个\n");
        }
        System.out.println("一共有:"+map.size()+"个标签");
        System.out.println(Arrays.toString(map.values().toArray()));
        System.out.println(Arrays.toString(map.keySet().toArray()));

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值