当前位置:首页 » 个人博客 » 正文

使用Java从HTML中分离纯文本的三种方法

 人参与  2022年11月20日 17:31  分类 : 个人博客  点这评论

在我们访问的每个网页上,我们都会遇到各种各样的多媒体内容,所有这些内容都是用超文本标记语言match(HTML)。HTML是许多开发人员都熟悉的一种基本编程语言,它由一些元素组成——当由浏览器解释时——通常与各种定制的元素一起形成一个连贯的、有组织的和有意的显示。这些代码为我们如何在网页上查看图像、视频、文字、超链接、数据输入字段以及您能想到的任何其他内容提供了框架——任何人只需在任何浏览器上单击鼠标右键,就可以查看所有这些代码。

030233853725.jpg

考虑到任何复杂的HTML字符串中都存在大量的格式元素,代码的实际主题——隐藏在这些字符串中的文本内容和文件路径——可能有点难以独立于这些格式规范进行访问。例如,如果我们想要查看web副本,然后以一种有意义的方式编辑或操作该文本,我们将很难直接从显示的web页面中复制和粘贴这些信息。我们最终只会得到一堆格式不一致的文本,充斥着超链接、徽标、不连贯的标签和空格等等。这并不是说做不到。当然,我们可以从任何网页上复制小的文本片段,并在像Microsoft Word这样的富文本编辑器中重新格式化这些片段,使之类似于它们的原始形式。问题是,这种“点击”的方法占用了我们工作日的宝贵时间,如果我们需要扩大我们的操作范围,以包括多个网站和数千个字符的文本,从长远来看,试图手动这样做将对我们自己造成很大的伤害。

与其浪费宝贵的时间和精力,试图通过灵巧的点击和拖动来抓取我们想要的文本match,我们不如使用专门配备的API服务将它从HTML代码中完全删除。我们可以通过一些方法来完成这种分离,这些方法虽然表面上看起来是相同的,但却可以适应稍微不同的用例。这些方法包括以下内容:

  1. 将HTML文件转换为纯文本
  2. 将HTML字符串转换为纯文本
  3. 从文本字符串中移除HTML

第一种和第二种方法本质上是相同的操作,但考虑到了两种不同的情况:在前者中,我们match的HTML代码以文件形式(当我们单击它时,它将直接作为浏览器页面打开)可供我们使用,在后者中,我们的HTML作为文本字符串可供我们使用(例如,我们通过右键单击我们的web浏览器来复制HTML)。第三种方法虽然在技术上实现了与前两种方法相同的目标,但它设想了一个更加关注安全性的用例,帮助我们识别HTML和跨站点脚本攻match(一种网络威胁形式,其中恶意行为者将可执行脚本放入受信任的应用程序/网站代码)中,而不假设我们有完整格式的HTML字符串可以使用。

在本文的剩余部分,我将演示三个简单的API解决方案,对于上面列出的三个略有不同的场景,它们可以用来将HTML代码与纯文本内容分开。这些API都是免费使用的,可以通过Cloudmersive文档转换API端点获得,使用单个自由层Cloudmersive API密钥来认证每个服务(每月最多提供800个API调用,没有额外的承诺)。下面,我提match供了现成match的运行Javamatchmatch 语言match(一matchmatch计算match机语言,尤用于创建match网站)帮助您构建对这三个API的matchAPI调用的代码示例,包括关于输入请求和输出响应(如果需要)的附加注释。

在我们开始调用每个单独的API迭代之前,我将首先提供帮助您用Maven或Gradle安装API客户端的说明(这些对于每个API迭代都是相同的)。用…安装专家,我们的第一个任务是在pom.xml中添加对我们的存储库的引用:

jitpack.iohttps://jitpack.io" data-lang="" style="box-sizing: border-box;">

<repositories>     <repository>         <id>jitpack.io</id>         <url>https://jitpack.io</url>     </repository> </repositories>


之后,我们只需要添加一个对pom.xml依赖项的额外引用:

com.github.CloudmersiveCloudmersive.APIClient.Javav4.25" data-lang="" style="box-sizing: border-box;">

<dependencies> <dependency>     <groupId>com.github.Cloudmersive</groupId>     <artifactId>Cloudmersive.APIClient.Java</artifactId>     <version>v4.25</version> </dependency> </dependencies>


要使用Gradle安装,我们需要将下面的代码片段添加到我们的根build.gradle(在存储库的末尾):

allprojects { repositories { ... maven { url 'https://jitpack.io' } } }


之后,我们需要在build.gradle中添加以下依赖项:

dependencies {         implementation 'com.github.Cloudmersive:Cloudmersive.APIClient.Java:v4.25' }


安装完成后,我们可以继续并开始构建我们的API调match。我将演示的第一个API迭代可以用于将HTML文档(文件)转换为纯文本。这个API要求文件路径输入包含在inputFile字段(由下面提供的示例中的代码注释指示)。我们只需要将下面的代码复制到我们的文件中,并相应地配置我们的输入:matchmatch

// Import classes: //import com.cloudmersive.client.invoker.ApiClient; //import com.cloudmersive.client.invoker.ApiException; //import com.cloudmersive.client.invoker.Configuration; //import com.cloudmersive.client.invoker.auth.*; //import com.cloudmersive.client.ConvertDocumentApi; ApiClient defaultClient = Configuration.getDefaultApiClient(); // Configure API key authorization: Apikey ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey"); Apikey.setApiKey("YOUR API KEY"); // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) //Apikey.setApiKeyPrefix("Token"); ConvertDocumentApi apiInstance = new ConvertDocumentApi(); File inputFile = new File("/path/to/inputfile"); // File | Input file to perform the operation on. try {     TextConversionResult result = apiInstance.convertDocumentHtmlToTxt(inputFile);     System.out.println(result); } catch (ApiException e) {     System.err.println("Exception when calling ConvertDocumentApi#convertDocumentHtmlToTxt");     e.printStackTrace(); }


我将演示的第二个API迭代可用于将HTML字符串转换为文本。此API的请求参数需要一个简单的HTML字符串输入,可以包括以下格式:

string" data-lang="" style="box-sizing: border-box;">

<?xml version="1.0" encoding="UTF-8"?> <HtmlToTextRequest> <Html>string</Html> </HtmlToTextRequest>


正确格式化HTML字符串后,可以将字符串传递给下面的代码示例,这样就完成了:

// Import classes: //import com.cloudmersive.client.invoker.ApiClient; //import com.cloudmersive.client.invoker.ApiException; //import com.cloudmersive.client.invoker.Configuration; //import com.cloudmersive.client.invoker.auth.*; //import com.cloudmersive.client.ConvertWebApi; ApiClient defaultClient = Configuration.getDefaultApiClient(); // Configure API key authorization: Apikey ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey"); Apikey.setApiKey("YOUR API KEY"); // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) //Apikey.setApiKeyPrefix("Token"); ConvertWebApi apiInstance = new ConvertWebApi(); HtmlToTextRequest input = new HtmlToTextRequest(); // HtmlToTextRequest | HTML to Text request parameters try {     HtmlToTextResponse result = apiInstance.convertWebHtmlToTxt_0(input);     System.out.println(result); } catch (ApiException e) {     System.err.println("Exception when calling ConvertWebApi#convertWebHtmlToTxt_0");     e.printStackTrace(); }


我将演示的最后一个API迭代可以用来执行前两个操作的逆操作:从一个文本字符串中删除HTML。要调用这个API,我们需要格式化我们的输入请求,如下例所示:

string" data-lang="" style="box-sizing: border-box;">

<?xml version="1.0" encoding="UTF-8"?> <RemoveHtmlFromTextRequest> <TextContainingHtml>string</TextContainingHtml> </RemoveHtmlFromTextRequest>


一旦我们的请求被格式化,我们可以通过下面的最终代码示例传递该请求,这将返回一个普通的TextContentResult字符串:

// Import classes: //import com.cloudmersive.client.invoker.ApiClient; //import com.cloudmersive.client.invoker.ApiException; //import com.cloudmersive.client.invoker.Configuration; //import com.cloudmersive.client.invoker.auth.*; //import com.cloudmersive.client.EditTextApi; ApiClient defaultClient = Configuration.getDefaultApiClient(); // Configure API key authorization: Apikey ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey"); Apikey.setApiKey("YOUR API KEY"); // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) //Apikey.setApiKeyPrefix("Token"); EditTextApi apiInstance = new EditTextApi(); RemoveHtmlFromTextRequest request = new RemoveHtmlFromTextRequest(); // RemoveHtmlFromTextRequest | Input request try {     RemoveHtmlFromTextResponse result = apiInstance.editTextRemoveHtml(request);     System.out.println(result); } catch (ApiException e) {     System.err.println("Exception when calling EditTextApi#editTextRemoveHtml");     e.printStackTrace(); }


有了这三个解决方案,你就可以很容易地将HTML从纯文本中分离出来,并记住三个不同的用例。每个API解决方案都返回一个简单的纯文本字符串,可以在任何富文本或纯文本编辑器中轻松查看和编辑。

本文由本站原创或投稿者首发,转载请注明来源!

本文链接:http://www.ziti66.com/net/html/167.html

本文标签:博客  html    

微信公众号:升级接入中

<< 上一篇下一篇 >>
为祖国加油
祖国加油,相信新的一年会更好...
为祖国加油
森林防火,人人有责。祖国加油...

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

搜索

网站分类

Tags列表

最新留言

++发现更多精彩++

    海内存知己,天涯若比邻。

黔ICP备2020011602号黔ICP备2020011602号-8
贵公安备52052602000222号

❤安全运行 Copyright © 2018-2025 66字体网 版权所有.

本站采用创作共用版权 CC BY-NC-SA 3.0 CN 许可协议,转载或复制请注明出处