jquery抓取网页内容(一下JS下常见的HTML解析库--HTML)
优采云 发布时间: 2021-12-30 04:04jquery抓取网页内容(一下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格式语法格式需要是容错的。当时,在图书馆中很难简单完美地实现。如果大家有更好的推荐,欢迎分享给大家。