📜  javascript 获取正文类 - Javascript (1)

📅  最后修改于: 2023-12-03 14:42:37.982000             🧑  作者: Mango

JavaScript 获取正文类 - Javascript

在编写 Web 应用程序时,经常需要从网页中提取正文内容。这个任务并不容易,因为 DOM 树结构非常复杂,不同的网页结构可能不同。本文将介绍使用 JavaScript 获取网页正文内容的几种方法。

1. 使用纯文本提取

最简单和最不可靠的方法是使用纯文本提取。这种方法仅仅是在整个文档中搜索最大的文本块,并提取其中的所有文本。这种方法的问题在于: 只要文本块稍有不同,结果就会非常不同。

function extractText1() {
  let bodyText = document.body.innerText || document.body.textContent;
  return bodyText.trim();
}

这个方法的原理是使用 innerText 或者 textContent 属性获取包含在 body 标签中的所有文本,并返回其中的字符串。

2. 使用正则表达式提取

正则表达式比纯文本提取更加可靠,但仍然不完美。这种方法可以用来提取常见的 HTML 标签,如标题、段落等等。

function extractText2() {
  let bodyHtml = document.body.innerHTML;
  let regex = /<(h[1-6]|p)[^>]*>(.*?)<\/(h[1-6]|p)>/gi;
  let matches = regex.exec(bodyHtml);
  let bodyText = '';

  while (matches !== null) {
      bodyText += matches[2];
      matches = regex.exec(bodyHtml);
  }

  return bodyText.trim();
}

这个方法的原理是使用正则表达式从 body HTML 中提取包含在特定标签中的文本,如使用 (h[1-6]|p) 匹配标题或者段落标签,并返回其中的字符串。

3. 使用第三方库

最可靠的方法是使用第三方 JavaScript 库来提取网页正文内容。这些库使用更加智能的算法,并处理了网页中的一些常见问题,如嵌套标签等等。

function extractText3() {
  let bodyHtml = document.body.innerHTML;
  let bodyText = '';
  let article = new Readability(document).parse();

  if (article !== null) {
      bodyText = article.textContent.trim();
  }

  return bodyText;
}

这个方法使用了 Readability.js 库,可以匹配大多数的网页,并返回其中的正文内容。

以上是三种使用 JavaScript 获取网页正文内容的方法。选择哪种方法取决于你的需求,如果文本比较简单,那么第一种方法可行;如果需要提取特定的 HTML 标签,则可以使用第二种方法;最可靠的方法是使用第三方 JavaScript 库。