jquery抓取网页内容(一下JS下常见的HTML解析库--HTML)

优采云 发布时间: 2021-12-30 04:04

  jquery抓取网页内容(一下JS下常见的HTML解析库--HTML)

  HTML 就是一切,每个打算做 Web 编程的人都应该熟悉 HTML 并了解如何解析 HTML。这尤其是前端工程师的基础。在本文中,我们将介绍 JS 下常见的 HTML 解析库。

  

  DOM解析器

  JavaScript 和 jQuery 的 DOM 操作函数非常适合分析简单的 HTML 片段。在实际编程中,如果要以编程方式解析DOM完整的HTML或XML,则需要一个更好的解决方案,DOMParser,这是所有现代数字浏览器都支持的功能。

  

  通过使用 DOMParser,您可以轻松解析 HTML 文档。但是,通常需要欺骗浏览器来实现解析,例如通过向当前文档添加新元素。

  DOMParser 的使用非常简单明了:

  let domParser = new DOMParser();

let doc = domParser.parseFromString(stringContainingXMLSource, "application/xml");

domParser = new DOMParser();

doc = domParser.parseFromString(stringContainingSVGSource, "image/svg+xml");

domParser = new DOMParser();

doc = domParser.parseFromString(stringContainingHTMLSource, "text/html");

  切里奥

  为服务器设计的核心 jQuery 的快速、灵活和精致的实现。

  Cheerio 看起来像 jQuery,但它不支持浏览器。Cheerio 可以解析 HTML 并使其易于操作,但它不会像在浏览器中那样解析 HTML,解析出与浏览器不同的内容,并且不会将解析结果直接发送给用户。

  Cheerio 实现了 jQuery 的一个子集,去除了 jQuery 中所有与 DOM 不一致或用于填充浏览器的东西,再现了 jQuery 最漂亮的 API

  得益于极其简洁和标准的 DOM 模型,Cheerio 在文档转换、操作和渲染方面非常高效。

  JavaScript 开发者应该熟悉 Cheerio 的语法和用法:

  var chro = require('cheerio'),

$ = chio.load('Hello World!');

$('h1.title').text('Hello Chongchong!');

$('h1').attr('id', 'welcome');

$.html();

结果:

Hello Chongchong!

  jsdom

  

  jsdom 是许多 Web 标准(尤其是 WHATWG DOM 和 HTML 标准)的纯 JavaScript 实现,可以与 Node.js 结合使用。jsdom 项目的目标是模拟 Web 浏览器的一个子集,以满足实际 Web 应用程序的测试和抓取。

  jsdom 不仅仅是一个 HTML 解析器,它还可以用作浏览器。在解析的上下文中,如果要解析的数据中省略了必要的标签,它会自动添加必要的标签。比如没有html标签,它会像浏览器一样隐式添加。

  您还可以选择指定一些属性,例如文档、引用 URL 或用户代理的 URL。如果您需要解析收录

本地 URL 的链接,则此 URL 特别有用。

  由于实际上和解析没有关系,所以只提到jsdom有(虚拟)控制台,支持cookies等,总之需要模拟浏览器环境

  它还可以处理外部资源。如果需要,可以使用 jsdom 加载和执行 JS 脚本。

  结果:

  "Hello, Chongchong!"

  解析5

  

  parse5 几乎提供了处理 HTML 所需的一切。Parse5 库,目标是构建其他工具,但也可以实现 HTML 解析来完成简单的任务。Parse5 易于使用,但它没有提供一种方法来操作浏览器提供的 DOM(例如 getElementById)。

  parse5 催生了一系列采用它的令人印象深刻的项目:jsdom、Angular2 和 Polymer。如果要求是高级操作或 HTML 解析的可靠基础,那么显然这是一个不错的选择。

  const parse5 = require('parse5');

  const document = parse5.parse('你好冲冲!');

  console.log(document.childNodes[1].tagName);

  总结

  在本文中,我们介绍了 JS 下几个常见的 Html 解析库。根据标准,实际的HTML格式语法格式需要是容错的。当时,在图书馆中很难简单完美地实现。如果大家有更好的推荐,欢迎分享给大家。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线