Jsoup简易教程

img-source-from-https://github.com/docker/dockercraft

本文是关于Jsoup的简单教程

目录:

Jsoup 简述

关于Jsoup:

jsoup是一个用于处理HTML的Java库。它提供了一种非常方便的API,用于提取和操作数据,使用DOM、CSS和类jquery方法。

  • 从URL、文件或字符串中提取和解析HTML
  • 使用DOM遍历或CSS选择器查找和提取数据
  • 操作HTML元素、属性和文本
  • 清除用户提交的非安全代码内容,以防止XSS攻击
  • 输出整洁的HTML

img1

获取获取糗事百科最新的段子

Document doc = Jsoup.connect("https://www.qiushibaike.com/text/").get();
Elements contentList = doc.select("div#content-left.col1 a.contentHerf");//content area selector
contentList.forEach(content->{
System.out.println(content.attr("href")+":"+content.text());//parse href attribute and content
});

OpenSource

jsoup是一个开放源码项目,在MIT的协议许可下发布。源代码托管在GitHub

选择器语法

使用选择器语法查找元素

jsoup支持类似于CSS(或JQuery)的选择器方式

选择器概览

  • tagname: 通过标签名称查找元素,e.g. a、div、p、span等标签…
  • ns|tag: 通过命名空间标签查找元素 e.g. fb|name 查找<fb:name> 元素
  • #id : 通过id查找元素, e.g. #logo
  • .class:通过类名查找元素, e.g. .masthead
  • [attribute]: 属性选择器, e.g. [href] 查找属性名为href的元素
  • [^attr]: 查找已该属性开头的元素, e.g. [^data-] 查找HTML5 dataset属性
  • [attr=value]: 元素有该属性和值, e.g. [width=500] (或者带分号 [data-name='launch sequence'])
  • [attr^=value], [attr$=value], [attr*=value]: 以元素的属性 开头、结尾、或者属性包含某值e, e.g. [href*=/path/]
  • [attr~=regex]: 属性中包含正则表达式; e.g. img[src~=(?i)\.(png|jpe?g)] 获取所有的img标签,并且图片地址包含(png,jpeg)
  • *: all elements, e.g. *

选择器组合

  • el#id: 某元素有该ID, e.g. div#logo
  • el.class: 某元素有该类, e.g. div.masthead
  • el[attr]: 某元素有该属性, e.g. a[href]

如何使用

  1. 下载Jsoupjar包 (1.11.2)
  2. 阅读官方Cookbook

img2

//获取开发者头条当日文章
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String url = "https://toutiao.io/prev/"+sdf.format(new Date());
System.out.println("fetch url:"+url);
Document doc = Jsoup.connect(url).get();
Elements list = doc.select("div.daily div.post");
System.out.println("点赞\t\t标题\t\t\t\t\t\t\t\t作者");
list.forEach(post->{
String upVote = post.select("a.btn.btn-default.like-button").text();
String title = post.select("h3.title").text();
String author = post.select("div.subject-name").text();
System.out.println(String.format("%-4s%-60s%s",upVote,title,author));
});

4.开始搞事吧

img

参考资料