【Jsoup】HTML解析器,轻松获取网页内容_html/css_WEB-ITnose
Jsoup简介
jsoup 是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
Jsoup.jpg
官网地址:http://jsoup.org/
在官网中下载 jsou-1.8.3.jar 文件,添加到自己项目的lib库中,便可使用Jsoup提供的api,官网中也提供了一套使用指南(Cookbook),便于开发者借鉴。
Jsoup解析HTML得到一个Document对象,通过操作Document的属性来获取HTML页面内容,所以,在开始之前,先介绍一下XML中Node、Element、Document等这些相关概念的区别,防止因概念混淆而导致乱用错用。
相关概念
- Jsoup中的继承关系
public abstract class Node implements Cloneable
public class Element extends Node
public class Document extends Element
从Jsoup源码对三者的定义可以看出如下一个树形继承关系:
Node、Element、Document继承关系.png
Node(节点)从上述继承关系上可以明确一点,文档中的所有内容都可以看做是一个节点。节点有很多种类型:属性节点(Attribute)、注释节点(Note)、文本节点(Text)、元素节点(Element)等,通常所说的节点是这些多种节点的统称。
Element(元素)相比节点而言,元素则是一个更小范围的定义。元素继承于节点,是节点的子集,所以一个元素也是一个节点,节点拥有的公有属性和方法在元素中也能使用。
Document(文档)文档继承于元素,指整个HTML文档的源码内容,通过 System.out.println(document.toString()); 即可在控制台打印出网页源码内容。
相互转换基于Node、Element和Document之间的“缠绵”关系,可以利用各个类中提供的方法适当转换获取所需对象,以供使用。
使用案例
Jsoup解析Html获取Document对象的方式分为三类:在线Url、Html文本字符串、文件,对应API如下
connect(String url)
parse(String html)
parse(File in, String charsetName)
在获取到Document对象之后,可以结合HTML源码,利用Jsoup提供的api通过class、tag、id、attribute等相关属性获取对应Element,进而得到所需要的网页内容。
下面以Jsoup的官网Cookbook页面为例,解析并获取页面目录内容。
网页内容:
Jsoup Cookbook网页.jpg
网页源码:
jsoup开发指南,jsoup中文使用手册,jsoup中文文档 jsoup Cookbook(中文版)
Jsoup解析:
import java.io.IOException;import java.text.ParseException;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.select.Elements;/** * @author 亦枫 * @created_time 2016年1月5日 * @file_user_todo Java测试类 * @blog http://www.jianshu.com/users/1c40186e3248/latest_articles */public class JavaTest { /** * 入口函数 * @param args * @throws ParseException */ public static void main(String[] args) throws ParseException { try { //解析Url获取Document对象 Document document = Jsoup.connect("http://www.open-open.com/jsoup/").get(); //获取网页源码文本内容 System.out.println(document.toString()); //获取指定class的内容指定tag的元素 Elements liElements = document.getElementsByClass("content").get(0).getElementsByTag("li"); for (int i = 0; i解析结果:
Jsoup parse result.png
欢迎订阅作者头条号:技术鸟欢迎关注亦枫微信公众号【技术鸟】,一个有态度的技术型公众号!
技术鸟_微信二维码.gif
推荐阅读
-
php获取网页标题和内容函数(不包含html标签)
-
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
-
php获取网页标题和内容函数(不包含html标签)
-
获取网页源码问题_html/css_WEB-ITnose
-
父页面获取子页面的内容_html/css_WEB-ITnose
-
怎么获取这个网页内容_html/css_WEB-ITnose
-
php获取网页标题和内容函数(不包含html标签)
-
求问:HTML网页 如何实现点击上方导航栏,下面内容变动?就是说点击导航栏,只变动页面中间,其他不动_html/css_WEB-ITnose
-
如何让网页一次过展开树状里面全部的内容_html/css_WEB-ITnose
-
php获取网页标题和内容函数(不包含html标签)