html - 如何从 HTML 中提取所见即所得的文本?
问题描述
当在浏览器中呈现时,HTML 文件令人赏心悦目且易于阅读,而当它以原始形式呈现时,很难理解。
是否可以从 HTML 片段中提取文本,并将其转换为具有基本格式的简单文本文件?
我的意思是一种松散的方法。移除 CSS,移除上标和下标。只保留人类理解新提取的文本所需的尽可能多的信息、文本和格式,就像他理解原始呈现的 HTML 片段一样。
PS:我尝试使用正则表达式,使用包容性方法来仅选择几个标签,并且很快证明两者都是不切实际的,因为 HTML 文件可能会变得非常棘手。
解决方案
一种选择是Turndown JS library,它既可以与 Node 一起使用,也可以作为 JS 库使用。它将 HTML 转换为 MarkDown。它还有一个演示页面,您可以在其中进行测试。
我用那个库创建了一个简单的例子,它在 textarea 中显示输出并下载文件(见这个答案):
// See https://github.com/domchristie/turndown#usage
var turndownService = new TurndownService();
var markdown = turndownService.turndown(document.getElementById('content'));
// Output to textarea for preview
var textarea = document.getElementById('out');
textarea.value = markdown;
// Download function from https://stackoverflow.com/a/18197341/5845085
function download(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
// Download the file
download('text.md', markdown);
<div id="content" hidden>
<h1>Title</h1>
<p>Text text text text</p>
<ul>
<li>Text</li>
<li>Text</li>
</ul>
</div>
<textarea id="out" style="width: 80%; height: 200px;"></textarea>
<script src="https://unpkg.com/turndown/dist/turndown.js"></script>
推荐阅读
- python - 如何安装旧的 PyQT 版本(版本 4)
- python - 如何在django rest框架的ListCreateApiView中使用create函数而不是perform_create
- jenkins - 在 Jenkins Pipeline 的 HTML 正文中使用环境变量
- arrays - 如何在C中初始化数组?
- matrix - 将每一列除以最大值/最后一个值
- eclipse - Apache Tomcat 9.0.40 服务器在 eclipse 上运行时抛出 404 错误。否则它工作正常
- google-cloud-platform - BigQuery 摘要
- wordpress - 如何更改 wordpress 网站上的默认单词?
- java - 分数计算
- rust - 无法将 Struct 属性设置为 Enum Rust