ZBLOG

前端有什么解析HTML的库?JS

在前端开发中,解析 HTML 的常用 JavaScript 库和工具包括以下几种:


1. 浏览器原生 API

  • DOMParser
    浏览器内置 API,可将 HTML 字符串解析为 DOM 树:

    const parser = new DOMParser();
    const doc = parser.parseFromString('<div>Hello</div>', 'text/html');
    console.log(doc.body.firstChild); // 获取解析后的 DOM 节点
    

    优点:无需额外依赖,性能高。

  • innerHTML / createElement
    直接操作 DOM:

    const div = document.createElement('div');
    div.innerHTML = '<span>Text</span>';
    

2. 第三方库

(1)Cheerio(Node.js & Browser)

类似 jQuery 的轻量级 HTML 解析器,适用于服务端(如爬虫)或浏览器:

  const cheerio = require('cheerio');
  const $ = cheerio.load('<div class="box">Content</div>');
  console.log($('.box').text()); // "Content"

特点:无虚拟 DOM,仅解析静态 HTML,适合快速提取数据。

(2)JSDOM(Node.js)

在 Node.js 中模拟浏览器 DOM:

const { JSDOM } = require('jsdom');
const dom = new JSDOM('<html><body><p>Hello</p></body></html>');
console.log(dom.window.document.querySelector('p').textContent); // "Hello"

特点:支持完整的 DOM API(如 querySelector),但较重。

(3)Parse5(Node.js)

高效的 HTML/XML 解析器,被用于多个工具链(如 Angular、Vue SSR):

const parse5 = require('parse5');
const document = parse5.parse('<div>Test</div>');
console.log(document.childNodes[0].tagName); // "div"

特点:速度快,适合服务端渲染(SSR)。

(4)HtmlParser2(Node.js & Browser)

流式低层解析器,适合逐块处理大型 HTML:

const htmlparser2 = require('htmlparser2');
const parser = new htmlparser2.Parser({
    onopentag(name, attribs) {
        console.log(`Tag: ${name}`);
    }
});
parser.write('<div id="foo">Content</div>');
parser.end();

3. WASM/高性能方案

  • Linkedom
    轻量级 DOM 实现,支持部分浏览器 API:
import { parseHTML } from 'linkedom';
const { document } = parseHTML('<h1>Title</h1>');
console.log(document.querySelector('h1').textContent);

选择建议

场景 推荐工具
浏览器环境 原生 DOMParser / innerHTML
Node.js爬虫 Cheerio / JSDOM
SSR/工具链 Parse5
流式处理 HtmlParser2

如果需要更具体的用法或示例代码,可以告诉我你的使用场景!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23149

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?