Java读取html 中标签的值

发布于:2024-04-24 ⋅ 阅读:(23) ⋅ 点赞:(0)
步骤一:发送请求

在开发中,我们要直接访问一个链接地址可以用:

阿帕奇的:HttpClient.execute()

hutool的:httpUtil.sendGet()

okhttp的:okhttputil.get()

等等,有很多发送http请求的方法;

如果返回的是json格式的字符串,可以用jsonUtil的工具类,直接转换成jsonobject,然后直接jsonObject.get("key"),就可以拿到数据,那如果返回的是一个html页面呢,应该怎么获取html页面中的信息呢;

步骤二:解析 HTML

Java 提供了多个库用于解析 HTML,比如 Jsoup 和 HtmlUnit。这里以 Jsoup 为例。

引入jsoup库

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.13.1</version>
</dependency>
// 引入 Jsoup 库
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

// 使用 Jsoup 解析 HTML
Document doc = Jsoup.parse(html);
步骤三:提取指定内容

 根据 HTML 的结构和需要提取的内容,可以使用 Jsoup 提供的选择器来获取指定的元素。以下是几个常见的选择器示例:

根据标签名提取内容:

// 选择 <title> 标签
String title = doc.select("title").text();

// 选择 <h1> 标签
String h1 = doc.select("h1").text();

根据类名提取内容:

// 选择 class 为 "content" 的元素
String content = doc.select(".content").text();

根据 ID 提取内容:

// 选择 id 为 "main" 的元素
String mainContent = doc.select("#main").text();
其它:

 你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据可以这样:

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

在本机硬盘上有一个HTML文件,需要对它进行解析从中抽取数据或进行修改:

File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/";);

解析一个body片断

Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();

Elements这个对象提供了一系列类似于DOM的方法来查找元素,抽取并处理其中的数据。具体如下:

A:查看元素

 getElementById(String id)
    getElementsByTag(String tag)
    getElementsByClass(String className)
    getElementsByAttribute(String key) (and related methods)
    Element siblings: siblingElements(), firstElementSibling(), lastElementSibling(); nextElementSibling(), previousElementSibling()
    Graph: parent(), children(), child(int index)

B:元素数据

  attr(String key)获取属性attr(String key, String value)设置属性
    attributes()获取所有属性
    id(), className() and classNames()
    text()获取文本内容text(String value) 设置文本内容
    html()获取元素内HTMLhtml(String value)设置元素内的HTML内容
    outerHtml()获取元素外HTML内容
    data()获取数据内容(例如:script和style标签)
    tag() and tagName()

C:操作HTML和文本

  append(String html), prepend(String html)
    appendText(String text), prependText(String text)
    appendElement(String tagName), prependElement(String tagName)
    html(String value)

从元素抽取属性,本文和HTML

String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
  Document doc = Jsoup.parse(html);//解析HTML字符串返回一个Document实现
  Element link = doc.select("a").first();//查找第一个a元素

  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>"//取得链接内的html内容

等等还有很多方法,具体可参考:

Jsoup(一)Jsoup详解(官方)