Jsoup
2021-04-02 07:28
标签:请求 选择 att 取数 data selector test query document jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 jsoup的主要功能如下: 从一个URL,文件或字符串中解析HTML 使用DOM或CSS选择器来查找、取出数据 可操作HTML元素、属性、文本 引入Jsoup依赖: Jsoup解析url PS:虽然使用Jsoup可以替代HttpClient直接发起请求解析数据,但是往往不会这样用,因为实际的开发过程中,需要使用到多线程,连接池,代理等等方式,而jsoup对这些的支持并不是很好,所以我们一般把jsoup仅仅作为Html解析工具使用 Jsoup解析字符串 Jsoup直接解析文件,并封装为Document对象 使用dom方式遍历文档 元素获取: 1.根据id查询元素getElementById 2.根据标签获取元素getElementsByTag 3.根据class获取元素getElementsByClass 4.根据属性获取元素getElementsByAttribute 元素中获取数据: 1.从元素中获取id 2.从元素中获取className 3.从元素中获取属性的值attr 4.从元素中获取所有属性attributes 5.从元素中获取文本内容text 使用选择器语法查找元素: Selector选择器组合使用: el#id: 元素+ID,比如: h3#city_bj el.class: 元素+class,比如: li.class_a el[attr]: 元素+属性名,比如: span[abc] 任意组合: 比如:span[abc].s_name ancestor child: 查找某个元素下子元素,比如:.city_con li 查找"city_con"下的所有li parent > child: 查找某个父元素下的直接子元素,比如: .city_con > ul > li 查找city_con第一级(直接子元素)的ul,再找所有ul下的第一级li parent > *: 查找某个父元素下所有直接子元素 Jsoup 标签:请求 选择 att 取数 data selector test query document 原文地址:https://www.cnblogs.com/roadlandscape/p/12556459.html
dependency>
groupId>org.jsoupgroupId>
artifactId>jsoupartifactId>
version>1.10.3version>
dependency>
dependency>
groupId>org.apache.commonsgroupId>
artifactId>commons-lang3artifactId>
version>3.7version>
dependency>
dependency>
groupId>commons-iogroupId>
artifactId>commons-ioartifactId>
version>2.6version>
dependency>
@Test
public void testJsoupUrl() throws Exception {
// 解析url地址
Document document = Jsoup.parse(new URL("https://www.cnblogs.com/roadlandscape/"), 1000);
// 获取title内容
String title = document.getElementsByTag("title").first().text();
System.out.println(title);
}
@Test
public void testJsoupString() throws Exception {
// 解析字符串
String content = FileUtils.readFileToString(new File("D:\\test.html"), "utf-8");
Document document = Jsoup.parse(content, "utf-8");
// 获取title内容
String title = document.getElementsByTag("title").first().text();
System.out.println(title);
}
@Test
public void testJsoupFile() throws Exception {
// 解析文件
Document document = Jsoup.parse(new File("D:\\test.html"), "utf-8");
// 获取title内容
String title = document.getElementsByTag("title").first().text();
System.out.println(title);
}
@Test
public void testDOM() throws Exception {
Document document = Jsoup.parse(new File("D:\\test.html"), "utf-8");
Element element = document.getElementById("city_bj");
System.out.println(element.text());
Element element2 = document.getElementsByTag("span").first();
System.out.println(element2.text());
Element element3 = document.getElementsByClass("class_a").first();
System.out.println(element3.text());
// Element element4 = document.getElementsByAttribute("abc").first();
Element element4 = document.getElementsByAttributeValue("abc", "123").first();
System.out.println(element4.text());
}
@Test
public void testData() throws Exception {
Document document = Jsoup.parse(new File("D:\\test.html"), "utf-8");
Element element = document.getElementById("test");
String id = element.id();
System.out.println(id);
String className = element.className();
System.out.println(className); // "class_a class_b"
Set
@Test
public void testSelector() throws Exception {
Document document = Jsoup.parse(new File("D:\\test.html"), "utf-8");
Elements elements = document.select("span");
for (Element element : elements) {
System.out.println(element.text());
}
Element element = document.select("#test").first();
System.out.println(element.text());
Element element1 = document.select(".class_a").first();
System.out.println(element1.text());
Element element2 = document.select("[abc]").first();
System.out.println(element2.text());
Elements elements2 = document.select("[class=s_name]");
for (Element e : elements2) {
System.out.println(e.text());
}
}