一、目录jsoup概述
使用场景
DOM解析
CSS选择器
HTML过滤
逻辑分析
总结
二、jsoup概述
官方解释:
jsoup是一个用于处理真实HTML的Java库。它提供了一个非常方便的API,用于提取和操作数据,使用最好的DOM,CSS和类似jquery的方法。
个人接触到jsoup是在用java写爬虫时,苦恼于大量使用正则匹配不仅降低了代码的可读性,相对也比较费时费力。这时候,一款爬虫框架突然引入眼帘,那就是jsoup。作为一款轻量,功能强大的爬虫框架,jsoup让简单抓取网页信息变得优雅,便捷。
虽然是一个java库,但是它的使用逻辑却无比接近于jQuery,以至于只要是熟悉或是了解jQuery的人可以轻而易举地上手这款框架。
三、使用场景
DOM解析
jsoup的dom解析异常简单吗,只需要new一个ducumnet对象即可实现获取这个网页元素,接下来以解析一个网页为例。可以看到,将网页转化成ducument类,之后的Element类以及其子类都可以看成是一个个节点,通过调用相关方法实现整个文件节点的遍历。同时,Element类的getElementByTag让人很容易联想到js中的相关方法,因此只要有点JS基础和java基础的人看这段代码都不会觉得陌生。
这里以查询学生成绩信息为例:
public class jsoupTest {
public void getGrade(String stu_num, String id_num) throws IOException {
String testURL = "http://jwc.cqupt.edu.cn/showS tuQmcj.php"; //目标网页 Connection con = Jsoup.connect(testURL); //获取连接 con.data("xh", stu_num); //填写参数 con.data("sfzh", id_num);
Document document = con.post(); //选择发送方式,获取整个网页信息,存在documnet类里
Element pTable = document.body().getElementsByClass("pTable").get(0); //通过class属性 ,获取子类元素 ;
Elements trs =