爬虫之Jsoup
Jsoup简介
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。官网:https://jsoup.org/
主要功能
- 从一个URL,文件或字符串中解析HTML
- 使用DOM或CSS选择器来查找、取出数据使用DOM或CSS选择器来查找、取出数据
- 可操作HTML元素、属性、文本可操作HTML元素、属性、文本
注意:jsoup是基于MIT协议发布的,可放心使用于商业项目。
org.jsoup
jsoup
1.11.3
jsoup api
6个包提供用于开发jsoup应用程序的类和接口。
- org.jsoup
- org.jsoup.examples
- org.jsoup.helper
- org.jsoup.nodes
- org.jsoup.parser
- org.jsoup.safety
- org.jsoup.salect
- Jsoup 类提供了连接,清理和解析HTML文档的方法
- Document 获取HTML文档
- Element 获取、操作HTML节点
- 三种加载HTML的方法
@Test
public void test1() throws IOException {
//从URL加载HTML
Document document = Jsoup.connect("http://www.baidu.com").get();
String title = document.title();
//获取html中的标题
System.out.println("title :"+title);
//从字符串加载HTML
String html = "First parse - 锐客网 "
+ "Parsed HTML into a doc.
";
Document doc = Jsoup.parse(html);
title = doc.title();
System.out.println("title :"+title);
//从文件加载HTML
doc = Jsoup.parse(new File("F:\\jsoup\\html\\index.html"),"utf-8");
title = doc.title();
System.out.println("title :"+title);
}
- 获取html中的head,body,url等信息
@Test
public void test2() throws IOException {
Document document = Jsoup.connect("http://www.baidu.com").get();
String title = document.title();
System.out.println("title :"+title);
//获取html中的head
System.out.println(document.head());
//获取html中的body
//System.out.println(document.body());
//获取HTML页面中的所有链接
Elements links = document.select("a[href]");
for (Element link : links){
System.out.println("link : "+ link.attr("href"));
System.out.println("text :"+ link.text());
}
}
- 获取URL的元信息
@Test
public void test3() throws IOException {
Document document = Jsoup.connect("https://passport.lagou.com").get();
System.out.println(document.head());
//获取URL的元信息
String description = document.select("meta[name=description]").get(0).attr("content");
System.out.println("Meta description : " + description);
String keywords = document.select("meta[name=keywords]").first().attr("content");
System.out.println("Meta keyword : " + keywords);
}
- 根据class名称获取表单
@Test
public void test4() throws IOException {
Document document = Jsoup.connect("https://passport.lagou.com/login/login.html?signature=8ECBCDF2B86061432B425A0B94FC863B&service=https%253A%252F%252Fwww.lagou.com%252F&action=login&serviceId=lagou&ts=1547711303033").get();
//获取拉勾网登入页面的body
//System.out.println(document.body());
//根据class名称获取表单
Elements formElement = document.getElementsByClass("form_body");
System.out.println(formElement.html());
//获取URL的元信息
for (Element inputElement : formElement) {
String placeholder = inputElement.getElementsByTag("input").attr("placeholder");
System.out.println(placeholder);
}
}
- 提取并打印表单参数
@Test
public void test5() throws IOException {
Document document = Jsoup.parse(new File("F:\\jsoup\\html\\login.html"),"utf-8");
Element loginform = document.getElementById("registerform");
Elements inputElements = loginform.getElementsByTag("input");
for (Element inputElement : inputElements) {
String key = inputElement.attr("name");
String value = https://www.it610.com/article/inputElement.attr("value");
System.out.println("Param name: "+key+" -- Param value: "+value);
}
}
- 设置元素的html内容
@Test
public void test6() throws IOException {
Document document = Jsoup.parse(new File("F:\\jsoup\\html\\index.html"),"utf-8");
System.out.println(document.body());
//
System.out.println("*************");
Element div = document.select("div").first();
div.html("Hello
");
// Hello
div.prepend("Fiest
");
//Fiest
Hello
div.append("Last
");
//Fiest
Hello
Last
System.out.println(document.body());
System.out.println("*************");
System.out.println(div.text());
System.out.println("*************");
//对元素包裹一个外部HTML内容
div.wrap("");
//Fiest
Hello
【爬虫之Jsoup】Last
System.out.println(document.body());
}
- 设置元素的文本内容
@Test
public void test7() throws IOException {
Document document = Jsoup.parse(new File("F:\\jsoup\\html\\index.html"),"utf-8");
System.out.println(document.body());
//
System.out.println("*************");
Element div = document.select("div").first();
div.text("7 > 8 ");
// 7 >
8
div.prepend("Fiest ");
//Fiest 7 >
8
div.append("Last ");
//Fiest 7 >
8 Last
System.out.println(document.body());
System.out.println("*************");
System.out.println(div.text());
}
推荐阅读
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 生活随笔|好天气下的意外之喜
- 感恩之旅第75天
- python学习之|python学习之 实现QQ自动发送消息