从 HTML 提取数据和资源

Aspose.HTML for Java 可将文件、URL、字符串或流中的 HTML 加载到 HTMLDocument。Java 应用程序可以检查 DOM、选择元素、读取文本和属性、将相对 URL 解析为绝对 URL,以及保存所需值或链接的资源。

当所需信息属于文档结构时,可以使用 DOM 方法、CSS 选择器或 XPath 表达式。如果元素指向图像、样式表、SVG 文件或其他资源,请使用解析后的绝对 URL 和网络服务下载其字节。这样可以将 HTML 分析与资源获取分开,使提取逻辑专注于应用程序实际需要的数据。


选择 Java 数据提取任务

根据需要收集的内容或资源类型选择相应示例。

从网站提取图片

查找图像元素,将相对源 URL 解析为绝对 URL,并保存引用的图像文件。

从网站提取 SVG

保存内联 SVG 标记,并下载 HTML 页面引用的外部 SVG 资源。

从 URL 下载文件

请求已知的资源 URL,检查响应,并将返回的字节写入本地文件。


使用 Java 从 HTML 提取链接

该示例加载 HTML 页面,读取每个链接的 href 属性,根据文档 URL 将相对引用解析为绝对 URL,并将不重复的 HTTP 和 HTTPS 链接写入 output/links.txt。同样的选择方式还可用于文本、元数据、表单值或资源属性。

使用 Java 从 HTML 提取链接

Path outputPath = Paths.get("output", "links.txt");
Files.createDirectories(outputPath.getParent());

try (HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/java/")) {
    HTMLCollection anchors = document.getElementsByTagName("a");
    Set<String> links = new LinkedHashSet<>();
    Iterator<Element> iterator = anchors.iterator();

    while (iterator.hasNext()) {
        Element anchor = iterator.next();
        String href = anchor.getAttribute("href");
        if (href.isEmpty()) {
            continue;
        }

        Url linkUrl = new Url(href, document.getBaseURI());
        String protocol = linkUrl.getProtocol();
        if ("http:".equals(protocol) || "https:".equals(protocol)) {
            links.add(linkUrl.getHref());
        }
    }

    Files.write(outputPath, links, StandardCharsets.UTF_8);
}

从 HTML 提取链接的步骤

  1. 使用 HTMLDocument 类加载源文档。
  2. 使用 getElementsByTagName("a") 选择链接元素。
  3. 读取每个 href 属性,并跳过空值。
  4. 使用 Url 类和文档的基 URI 将相对引用解析为绝对 URL。
  5. 保留 HTTP 和 HTTPS 链接,删除重复项,并将集合保存到文本文件。

使用 DOM、CSS 选择器或 XPath 查找 HTML 数据

根据源文档的结构选择合适的方法:

  • DOM 集合 – 如果需要具有已知标签的所有元素,请使用 getElementsByTagName()。
  • CSS 选择器 – 使用 querySelector() 获取第一个匹配项,或使用 querySelectorAll() 获取与 CSS 选择器匹配的所有元素。
  • XPath – 如果选择条件依赖层级结构、属性或难以通过 CSS 选择器表达的文本条件,请使用 XPath 表达式。
  • 资源 URL – 读取 src 或 href 等属性,根据文档基 URI 将其解析为绝对 URL,并仅请求应用程序需要的文件。

有关 DOM、CSS 选择器和 XPath 的示例,请参阅 HTML 导航 ;有关资源处理的示例,请参阅 数据提取 文档。


HTML 数据提取常见问题

1. Aspose.HTML for Java 能否只提取特定数据而不保存整个页面?

可以。将源加载到 HTMLDocument,只选择所需节点,然后存储文本、属性或引用的资源。应用程序无需保存整个页面的副本。

2. 如何在 Java 中只提取特定的 HTML 元素?

对于已知标签,使用 getElementsByTagName();对于 CSS 选择器匹配项,使用 querySelector() 或 querySelectorAll();如果选择条件依赖文档层级、属性或文本条件,则使用 XPath。

3. Aspose.HTML for Java 能否提取 HTML 表格中的行和单元格?

可以。通过 DOM 选择 table、tr、th 和 td 元素,然后将文本和属性映射到 Java 应用程序所需的数据结构。

4. Aspose.HTML for Java 可免费用于数据提取吗?

Aspose.HTML for Java 是商业库。您可以下载 评估版 并申请 临时许可证 ,在购买前不受评估模式限制地测试数据提取功能。


安装 Aspose.HTML for Java

从 Aspose 官方存储库添加 Aspose.HTML for Java。将 ASPOSE_HTML_VERSION 替换为 Aspose.HTML for Java 版本页面 中的确切版本号,然后重新加载或重新构建项目,使依赖项得到正确解析。

将存储库和依赖项添加到 Maven 项目:

Maven – pom.xml

<repositories>
    <repository>
        <id>AsposeJavaAPI</id>
        <url>https://releases.aspose.com/java/repo/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-html</artifactId>
        <version>ASPOSE_HTML_VERSION</version>
    </dependency>
</dependencies>

将存储库和依赖项添加到 Gradle 项目:

Gradle – build.gradle

repositories {
    maven {
        url = uri('https://releases.aspose.com/java/repo/')
    }
}
dependencies {
    implementation 'com.aspose:aspose-html:ASPOSE_HTML_VERSION'
}

请使用与所选版本兼容的 JDK。有关手动安装 JAR、Kotlin DSL、更新和依赖项故障排除的信息,请参阅 安装 Aspose.HTML for Java 。

Aspose.HTML for Java 的其他任务

继续阅读有关创建、转换、合并和处理 HTML 文档的 Java 指南。