新聞中心
HTML即一切,所有打算進(jìn)行Web編程的人都應(yīng)該熟悉HTML,并了解如何解析HTML。尤其對(duì)前端工程師來說這更是基礎(chǔ),本文我們就來介紹一下JS下常見的HTML解析庫(kù)。

創(chuàng)新互聯(lián)是專業(yè)的藁城網(wǎng)站建設(shè)公司,藁城接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行藁城網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
DOMParser
JavaScript和jQuery的DOM操作功能非常適合簡(jiǎn)單HTML片段的解析。在實(shí)際編程中,如果要以編程方式解析DOM完整HTML或XML,則需要一個(gè)更好的解決方案,那就是DOMParser,它是所有現(xiàn)代數(shù)瀏覽器都支持的功能。
通過使用DOMParser,可以輕松解析HTML文檔。但是,一般需要通過欺騙瀏覽器來實(shí)現(xiàn)解析,比如,通過向當(dāng)前文檔添加新元素。
DOMParser的用法非常簡(jiǎn)單明了:
- 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");
Cheerio
專為服務(wù)器設(shè)計(jì)的核心jQuery的快速,靈活和精致的實(shí)現(xiàn)。
Cheerio看起來像jQuery,但是不支持瀏覽器。Cheerio可以解析HTML并使其易于操作,但不會(huì)像瀏覽器中那樣解釋HTML,解析出與瀏覽器不同的內(nèi)容,并且解析的結(jié)果不會(huì)直接發(fā)送給用戶。
Cheerio實(shí)現(xiàn)了jQuery子集,去掉了jQuery中所有與DOM不一致或者是用來填補(bǔ)瀏覽器的東西,重現(xiàn)了jQuery最美妙的API
由于使用了極其簡(jiǎn)潔而又標(biāo)準(zhǔn)的DOM模型, Cheerio對(duì)文檔的轉(zhuǎn)換,操作,渲染都極其的高效。
JavaScript開發(fā)人員都應(yīng)該熟悉Cheerio的語(yǔ)法和用法:
- var chro = require('cheerio'),
- $ = chio.load('
Hello World!
');- $('h1.title').text('Hello Chongchong!');
- $('h1').attr('id', 'welcome');
- $.html();結(jié)果:
Hello Chongchong!
jsdom
jsdom是很多Web標(biāo)準(zhǔn)(尤其是WHATWG DOM和 HTML 標(biāo)準(zhǔn))純JavaScript實(shí)現(xiàn),可與Node.js結(jié)合使用。jsdom項(xiàng)目的目標(biāo)是模擬Web瀏覽器的子集,從而滿足測(cè)試和抓取實(shí)際的Web應(yīng)用程序。
jsdom不僅僅是HTML解析器,它還可以當(dāng)成瀏覽器。在解析的上下文中,如果要解析的數(shù)據(jù)中省略了必要的標(biāo)記,它會(huì)自動(dòng)添加必要的標(biāo)記。例如,如果沒有html標(biāo)簽,它將像瀏覽器一樣隱式地添加它。
還可以選擇指定一些屬性,例如文檔,引薦來源網(wǎng)址或用戶代理的URL。如果需要解析包含本地URL的鏈接,則該URL特別有用。
由于它實(shí)際上與解析無(wú)關(guān),因此只提到j(luò)sdom具有(虛擬)控制臺(tái),對(duì)cookie的支持等??傊?,需要模擬瀏覽器環(huán)境
它還可以處理外部資源。如有需求jsdom可以用來加載并執(zhí)行JS腳本。
- const jsdom = require("jsdom");
- const { JSDOM } = jsdom;const dom = new JSDOM('
Hello, Chongchong!
');- console.log(dom.window.document.querySelector("p").textContent);
結(jié)果:
- "Hello, Chongchong!"
parse5
parse5提供了處理HTML時(shí)所需的幾乎所有內(nèi)容。Parse5庫(kù),目標(biāo)是構(gòu)建其他工具,但也可以實(shí)現(xiàn)HTML解析以完成簡(jiǎn)單任務(wù)。Parse5易于使用,但是并不提供瀏覽器為提供的操作DOM的方法(例如getElementById)。
parse5衍生出了一系列采用它的令人印象深刻的項(xiàng)目:jsdom,Angular2和Polymer。如果需求為對(duì)HTML的高級(jí)操作或解析的可靠基礎(chǔ),那么顯然這是一個(gè)不錯(cuò)的選擇。
- const parse5 = require('parse5');
- const document = parse5.parse('Hello Chongchong!');
- console.log(document.childNodes[1].tagName);
總結(jié)
本文我們介紹幾個(gè)JS下常見的Html解析庫(kù)。根據(jù)標(biāo)準(zhǔn),實(shí)際的HTML格式語(yǔ)法格式是需要容錯(cuò)的。當(dāng)時(shí)這在庫(kù)很難簡(jiǎn)單完美的實(shí)現(xiàn)。如果你有更好的推薦,歡迎和大家一起分享。
當(dāng)前名稱:值得推薦的HTML文檔JS解析庫(kù)
URL鏈接:http://www.dlmjj.cn/article/djdgdsi.html


咨詢
建站咨詢
