Jsoup的使用
最近在做一个功能需要解析html字符串,于是用到了Jsoup,整理了一番方便以后翻查。
Jsoup能够实现java对html文件和html字符串的解析,并能获取其内容和修改内容。
我是Maven工程,使用时需要导入Jsoup的依赖:
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.1</version>
</dependency>
1.解析html
1.1.解析html文件
public static void main(String[] args) {
try {
// 第一个参数是文件路径,第二个参数是字符集
Document document = Jsoup.parse(new File("E:/bookmarks_2020_6_24.html"),"utf-8");
System.out.println(document);
} catch (IOException e) {
e.printStackTrace();
}
}
1.2.解析html字符串
// 如果是要解析body片段,可以使用Jsoup.parseBodyFragment(String htmlBody)
// 下面方法解析片段也是可以的
public static void main(String[] args) {
String html = "<html><head><title>hello Jsoup</title></head><body><p>Use Jsoup Say Hello!</p></body></html>";
Document document = Jsoup.parse(html);
System.out.println(document);
}
2.操作元素
Document中提供了一些选择元素的api
-
获取元素:
- getElementById(String id);
- getElementsByTag(String tagName);
- getElementsByClass(String className);
- getElementsByAttribute(String key);
获取元素还可以通过其他选择器,使用Element.select(String selector) 来选择,类似CSS中的选择器
-
操作元素属性和数据:
Element 中提供一些api操作元素的属性和数据
- attr(String attrName) 获取元素
- attr(String attrName, String value) 给指定属性设置属性值
- attributes() 获取所有属性
- text() 获取文本内容
- text(String value) 设置文本内容
- html() 获取元素内容(包含标签)
- html(String content) 给元素设置内容(可以解析标签)
- outerHtml() 获取改元素外的内容
- data() 获取数据内容,如:style 和 script 标签
3.示例:
// 解析html字符串,将其中的http图片下载到本地,然后把文档流中的 img标签的src替换成本地图片的路径
public static void main(String[] args) {
// content是一个html字符串,太长不作展示
Document document = Jsoup.parse(content);
Elements imgList = document.getElementsByTag("img");
List<String> imgUrl = new ArrayList<>();
for (Element img : imgList) {
String src = img.attr("src");
imgUrl.add(src);
}
// 遍历下载图片本地,代码略。。。
// 将文档流中img标签的src属性值替换掉
for (int i = 0; i < imgList.size(); i++) {
imgList.get(i).attr("src","aaa_" + i + "png");
}
System.out.println(document.toString());
}
434

被折叠的 条评论
为什么被折叠?



