通过Java操作HTML -----jsoup

JSOUP

官方中文文档

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

主要功能:

  1. 从一个URL,文件或字符串中解析HTML;

  2. 使用DOM或CSS选择器来查找、取出数据;

  3. 可操作HTML元素、属性、文本;

  4. jsoup是基于MIT协议发布的,可放心使用于商业项目。

依赖关系:

  • jsoup完全是自包含的,没有依赖性。

  • jsoup可在Java 7及更高版本,Scala,Kotlin,Android,OSGi,Lambda和Google App
    Engine上运行。

Maven和 jar下载位置

https://jsoup.org/download

------解析HTML文档-------

    //html 
String html = "<html><head><title>First parse</title></head>"
    + "<body><p>Parsed HTML into a doc.</p></body></html>";
    //解析得到DOM
  Document doc = Jsoup.parse(html);

解析器将尽一切努力从您提供的HTML创建干净的解析,无论HTML的格式是否正确。它处理:

  • 未关闭的标签 (例如,<p>Lorem <p>Ipsum解析为<p>Lorem</p> <p>Ipsum</p>)
  • 隐式标签 (例如,将裸体<td>Table data</td>包裹在中<table><tr><td>...)
  • 可靠地创建文档结构(html包含head和body,并且头部中仅包含适当的元素)

从元素中提取属性,文本和HTML

String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
Document doc = Jsoup.parse(html);
Element link = doc.select("a").first();

String text = doc.body().text(); // "An example link"
String linkHref = link.attr("href"); // "http://example.com/"
String linkText = link.text(); // "example""

String linkOuterH = link.outerHtml(); 
    // "<a href="http://example.com"><b>example</b></a>"
String linkInnerH = link.html(); // "<b>example</b>"

其他Api:

Element.id()
Element.tagName()
Element.className() 和 Element.hasClass(String className)

从网上获取并解析HTML文档,然后在其中查找数据(屏幕抓取)

Jsoup.connect(String url)

获取示例域

Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();

该connect(String url)方法创建一个new Connection,并get()获取并解析一个HTML文件。如果在提取网址时发生错误,则会抛出一个IOException,您应该适当地处理它。
—实例—

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class JsoupString {
  public static void main(String[] args) {
	  Document doc;
	try {
		doc = Jsoup.connect("https://www.chrisyoung777.com").get();
		  String title = doc.title();
		  System.out.println(title);
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

}
}
//控制台输出
Hi.man

在这里插入图片描述

数据修改

  • 设置属性值

Elements 提供了批量操作元素属性和class的方法,比如:要为div中的每一个a元素都添加一个 rel=“nofollow” 可以使用如下方法:

  • 设置元素的html内容
Element div = doc.select("div").first(); // <div></div>
div.html("<p>lorem ipsum</p>"); // <div><p>lorem ipsum</p></div>
div.prepend("<p>First</p>");//在div前添加html内容
div.append("<p>Last</p>");//在div之后添加html内容
// 添完后的结果: <div><p>First</p><p>lorem ipsum</p><p>Last</p></div>

Element span = doc.select("span").first(); // <span>One</span>
span.wrap("<li><a href='http://example.com/'></a></li>");
// 添完后的结果: <li><a href="http://example.com"><span>One</span></a></li>
  • 设置元素的文本内容
Element div = doc.select("div").first(); // <div></div>
div.text("five > four"); // <div>five &gt; four</div>
div.prepend("First ");
div.append(" Last");
// now: <div>First five &gt; four Last</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值