如何从HTML中提取所见即所得的文本?

时间:2018-06-21 07:43:19

标签: html text

HTML文件在浏览器中呈现时令人赏心悦目,并且易于阅读,要理解它的原始内容真是个地狱。

是否可以从HTML片段中提取文本并将其转换为具有基本格式的简单文本文件?

我的意思是一种混乱的方法。删除CSS,删除上标和下标。仅保留必要的信息,文本和格式,以便人类以理解原始提取的HTML片段的方式理解新提取的文本。

P.S:我尝试使用正则表达式,使用包容性方法仅选择一些标签,并且由于HTML文件可能会变得非常棘手,因此两者都很快被证明是不切实际的。

1 个答案:

答案 0 :(得分:1)

一个选项是Turndown JS library,它可以与Node一起使用或用作JS库。它将HTML转换为MarkDown。它还有一个demo page,可在其中进行测试。

我使用该库创建了一个简单的示例,该示例在textarea中显示输出并下载文件(请参见this answer):

// 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>