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

发布于:2025-02-10 ⋅ 阅读:(53) ⋅ 点赞:(0)

爬虫中经常用到,使用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里,返回。