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里,返回。