jquery抓取网页内容(JavaHTML解析器解析获取Document对象的方式及方式详解 )

优采云 发布时间: 2022-03-18 06:10

  jquery抓取网页内容(JavaHTML解析器解析获取Document对象的方式及方式详解

)

  Jsoup简介

  jsoup 是一个 Java HTML 解析器,可以直接解析一个 URL 地址和 HTML 文本内容。它提供了一个非常省力的 API,用于通过 DOM、CSS 和类似 jQuery 的操作方法获取和操作数据。

  

  Jsoup.jpg

  官网地址:

  官网还提供了一套用户指南(Cookbook),方便开发者学习。

  Jsoup解析HTML得到一个Document对象,通过操作Document的属性来获取HTML页面的内容。因此,在开始之前,我们先介绍一下XML中Node、Element、Document等相关概念的区别,以防止概念使用混淆造成误用。

  相关概念

  public abstract class Node implements Cloneable

  public class Element extends Node

  public class Document extends Element

  从Jsoup源码中对三者的定义可以看出如下树继承关系:

  

  节点、元素、文档继承关系.png

  节点

  从上面的继承关系可以看出,文档中的一切都可以看作一个节点。节点的种类很多:属性节点(Attribute)、注释节点(Note)、文本节点(Text)、元素节点(Element)等。节点通常被称为这些各种节点的统称。

  元素

  元素是比节点更小的范围的定义。元素继承自节点,是节点的子集,所以元素也是节点,节点拥有的公共属性和方法也可以在元素中使用。

  文档

  文档继承自元素,该元素引用整个 HTML 文档的源内容。通过 System.out.println(document.toString());,可以在控制台打印网页的源内容。

  相互转换

  基于 Node、Element 和 Document 之间的“缠绵”关系,可以利用各个类中提供的方法,进行适当的转换,获取使用所需的对象。

  用例

  Jsoup解析Html获取Document对象的方式分为在线Url、Html文本字符串、文件三类,对应API如下

  获取Document对象后,可以结合HTML源码,使用Jsoup提供的API,通过class、tag、id、attribute等相关属性获取对应的Element,进而获取需要的网页内容。

  我们以Jsoup官网的Cookbook页面为例,解析获取页面目录的内容。

  网页内容:

  

  Jsoup Cookbook 网页.jpg

  网页来源:

  

jsoup开发指南,jsoup中文使用手册,jsoup中文文档

jsoup

新闻

bugs

讨论

下载

api参考

Cookbook

jsoup » cookbook

jsoup Cookbook(中文版)

入门

解析和遍历一个html文档

输入

解析一个html字符串

解析一个body片断

根据一个url加载Document对象

根据一个文件加载Document对象

数据抽取

使用dom方法来遍历一个Document对象

使用选择器语法来查找元素

从元素集合抽取属性、文本和html内容

URL处理

程序示例:获取所有链接

数据修改

设置属性值

设置元素的html内容

设置元素的文本内容

html清理

消除不受信任的html (来防止xss攻击)

jsoup html parser: copyright © 2009 - 2011 jonathan hedley

  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/1*敏*感*词*0186e3248/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 < liElements.size(); i++) {

System.out.println(i + ". " + liElements.get(i).text());

}

} catch (IOException e) {

System.out.println("解析出错!");

e.printStackTrace();

}

}

}

  解析结果:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线