Jsoup
当我们成功抓取到页面数据了之后,还需要对抓取的数据进行解析,而刚好,Jsoup 是一款专门解析 html 页面的技术。Jsoup是一款基于 Java 的HTML 解析器,可直接解析某个 URL 地址、HTML 、文本内容。可以通过DOM、CSS以及类似于JQuery的操作方法来取出和操作数据。
DOM 方式遍历文档
元素获取
-
根据id查询元素getElementById
document.getElementById("id");
-
根据标签获取元素getElementsByTag
document.getElementsByTag("title").first();
-
根据class获取元素getElementsByClass
document.getElementsByClass("item_name").last();
-
根据属性获取元素getElementsByAttribute
document.getElementsByAttribute("abc").first();
使用选择器语法查找元素
Jsoup elements 对象支持类似于CSS (或JQuery)的选择器语法,来实现非常强大和灵活的查找功能。这个select 方法在Document, Element,或Elements对象中都可以使用。且是上下文相关的,因此可实现指定元素的过滤,或者链式选择访问。Select方法将返回一个Elements集合,并提供一组方法来抽取和处理结果。
Selector选择器概述
-
tagname: 通过标签查找元素,比如:li
Elements span = document.select("li");
-
#id: 通过 ID 查找元素,比如:# id
document.select("#id").text();
-
.class: 通过 class 名称查找元素,比如:.class_a (class标签前面有个 点 别忘记)
document.select(".class_a").text();
-
[attribute]: 利用属性查找元素,比如:[abc]
document.select("[abc]").text();
-
[attr=value]: 利用属性值来查找元素,比如:[class=item_name]
document.select("[class=item_name]").text();
Selector选择器组合使用
el#id : 元素 + ID,例如 p#id
el.class : 元素 + class,例如 div.class_a
el[attr] : 元素 + 属性名,例如 span[abc]
任意组合 : span[abc].class_a
查找某个元素下子元素:比如;.class_a li 就是查找 .class_a 下的所有 li 标签的内容
查找某个父元素下的直接子元素:比如 div#J_goodsList > ul > li 查找 div id为 J_goodsList 第一级(直接子元素)的ul,再找所有ul下的第一级li
父元素>*: 比如 ul > * 查找 ul 标签下所有直接子元素