oc html解析xml标签,GitHub - hongocquy/htmlparser2: forgiving html and xml parser

htmlparser2

687474703a2f2f696d672e736869656c64732e696f2f6e706d2f762f68746d6c706172736572322e7376673f7374796c653d666c6174

68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f68746d6c706172736572322e7376673f7374796c653d666c6174

687474703a2f2f696d672e736869656c64732e696f2f7472617669732f666235352f68746d6c706172736572322f6d61737465722e7376673f7374796c653d666c6174

687474703a2f2f696d672e736869656c64732e696f2f636f766572616c6c732f666235352f68746d6c706172736572322e7376673f7374796c653d666c6174

A forgiving HTML/XML/RSS parser. The parser can handle streams and provides a callback interface.

Installation

npm install htmlparser2

A live demo of htmlparser2 is available here.

Usage

var htmlparser = require("htmlparser2");

var parser = new htmlparser.Parser({

onopentag: function(name, attribs){

if(name === "script" && attribs.type === "text/javascript"){

console.log("JS! Hooray!");

}

},

ontext: function(text){

console.log("-->", text);

},

onclosetag: function(tagname){

if(tagname === "script"){

console.log("That's it?!");

}

}

}, {decodeEntities: true});

parser.write("Xyz

parser.end();

Output (simplified):

--> Xyz

JS! Hooray!

--> var foo = '<>';

That's it?!

Documentation

Read more about the parser and its options in the wiki.

Get a DOM

The DomHandler (known as DefaultHandler in the original htmlparser module) produces a DOM (document object model) that can be manipulated using the DomUtils helper.

The DomHandler, while still bundled with this module, was moved to its own module. Have a look at it for further information.

Parsing RSS/RDF/Atom Feeds

new htmlparser.FeedHandler(function( error, feed){

...

});

Note: While the provided feed handler works for most feeds, you might want to use danmactough/node-feedparser, which is much better tested and actively maintained.

Performance

After having some artificial benchmarks for some time, @AndreasMadsen published his htmlparser-benchmark, which benchmarks HTML parses based on real-world websites.

At the time of writing, the latest versions of all supported parsers show the following performance characteristics on Travis CI (please note that Travis doesn't guarantee equal conditions for all tests):

gumbo-parser : 34.9208 ms/file ± 21.4238

html-parser : 24.8224 ms/file ± 15.8703

html5 : 419.597 ms/file ± 264.265

htmlparser : 60.0722 ms/file ± 384.844

htmlparser2-dom: 12.0749 ms/file ± 6.49474

htmlparser2 : 7.49130 ms/file ± 5.74368

hubbub : 30.4980 ms/file ± 16.4682

libxmljs : 14.1338 ms/file ± 18.6541

parse5 : 22.0439 ms/file ± 15.3743

sax : 49.6513 ms/file ± 26.6032

How does this module differ from node-htmlparser?

This is a fork of the htmlparser module. The main difference is that this is intended to be used only with node (it runs on other platforms using browserify). htmlparser2 was rewritten multiple times and, while it maintains an API that's compatible with htmlparser in most cases, the projects don't share any code anymore.

The parser now provides a callback interface close to sax.js (originally targeted at readabilitySAX). As a result, old handlers won't work anymore.

The DefaultHandler and the RssHandler were renamed to clarify their purpose (to DomHandler and FeedHandler). The old names are still available when requiring htmlparser2, your code should work as expected.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值