当前位置: 首页 > article >正文

Java使用Jsoup处理报文简单样例

爬虫中经常用到,使用post或者get方法获得响应报文后,用这个方法处理,找到想要的数据。

一、maven配置

        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.13.1</version>
        </dependency>

一个是处理json用的,一个就是jsoup本身。

二、代码样例

假设报文是:

<html>
<div class="bet-tb bet-tb-dg">no_use</div>
<div class="bet-tb bet-tb-dg">
<table>
<tr>
<td>编号</td><td>姓名</td><td>地址</td>
</tr>
<tr>
<td>0</td><td>a</td><td>1</td>
</tr>
<tr>
<td>1</td><td>b</td><td>2</td>
</tr>
</table>
</div>
</html>
    public static ArrayList jsoup(String str, ExecelBean execelBean, boolean single){
       
        ArrayList list = new ArrayList();

        Document doc = Jsoup.parse(str);
        Element element = null;
        try {
            element = doc.getElementsByClass("bet-tb bet-tb-dg").get(1);
        } catch (Exception e){
            System.out.println("出错了!");
            return;
        }
        Elements tr = element.getElementsByTag("tr");
        for(int i=0; i<tr.size(); i++){
            String number = tr.get(i).getElementsByTag("td").get(0).text();
            String name =  tr.get(i).getElementsByTag("td").get(1).text();
            String address = tr.get(i).getElementsByTag("td").get(2).text();

            String[] strs = new String[]{number, name , address};
                        
            list.add(strs);
        }
        return list;
    }

其中,先把响应报文转为Document对象;
然后按类名查找,得到有哪些元素,选择的是第二个元素(从0开始,get(1)就是第二个);
然后再查找第二个元素里,是tr标签的元素,样例中有3行tr;
然后循环,找到其中的td元素,text()方法就类似js的innerText方法,获取标签里面的文本信息;

最后装到list里,返回。


http://www.kler.cn/a/533115.html

相关文章:

  • 【Java】位图 布隆过滤器
  • Java牙科诊所管理系统web医院病例挂号预约平台springboot/ssm代码编写
  • 自定义数据集 使用scikit-learn中SVM的包实现SVM分类
  • Linux防火墙基础
  • Python写一个爱心
  • 如何确认Linux嵌入式系统的触摸屏对应的是哪个设备文件?如何查看系统中所有的输入设备?输入设备的设备文件有什么特点?
  • CSS in JS
  • 【LeetCode: 922. 按奇偶排序数组 II + 双指针】
  • 个人c项目 java项目解释
  • 力扣 45. 跳跃游戏 II
  • 3. k8s二进制集群之负载均衡器高可用部署
  • 7. k8s二进制集群之Kube ApiServer部署
  • Oracle日常管理(8)——OS日常管理(1)
  • WPS计算机二级•幻灯片的配色、美化与动画
  • Day 28 卡玛笔记
  • JAVA篇12 —— 泛型的使用(待完善)
  • 多线程的常用方法
  • 高等代数笔记—域与一元多项式
  • 中国证券基本知识汇总
  • HTB:Administrator[WriteUP]
  • 【01-Qt-C++-android】
  • Redis --- 秒杀优化方案(阻塞队列+基于Stream流的消息队列)
  • 100.3 AI量化面试题:解释配对交易(Pairs Trading)的原理,并说明如何选择配对股票以及设计交易信号
  • 使用Java操作Redis数据类型的详解指南
  • 100.5 AI量化面试题:在使用LSTM预测股票价格时,如何有效处理金融时间序列的非平稳性?
  • c++ string类 +底层模拟实现