{"_id":"htmlparser2-papandreou","_rev":"3-b1de2293562bcb7fe74907755146249d","name":"htmlparser2-papandreou","description":"Fast & forgiving HTML/XML/RSS parser","dist-tags":{"latest":"3.9.1-patch1"},"versions":{"3.9.1-patch1":{"name":"htmlparser2-papandreou","description":"Fast & forgiving HTML/XML/RSS parser","version":"3.9.1-patch1","author":{"name":"Felix Boehm","email":"me@feedic.com"},"keywords":["html","parser","streams","xml","dom","rss","feed","atom"],"repository":{"type":"git","url":"git://github.com/fb55/htmlparser2.git"},"bugs":{"url":"http://github.com/fb55/htmlparser2/issues"},"directories":{"lib":"lib/"},"main":"lib/index.js","files":["lib"],"scripts":{"lcov":"istanbul cover _mocha --report lcovonly -- -R spec","coveralls":"npm run lint && npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)","test":"mocha && npm run lint","lint":"eslint lib test"},"dependencies":{"domelementtype":"^1.3.0","domhandler":"^2.3.0","domutils":"^1.5.1","entities":"^1.1.1","inherits":"^2.0.1","readable-stream":"^2.0.2"},"devDependencies":{"coveralls":"^2.11.4","istanbul":"^0.4.3","mocha":"^2.2.5","eslint":"^2.12.0","mocha-lcov-reporter":"^1.2.0"},"browser":{"readable-stream":false},"license":"MIT","gitHead":"42775f270d06a002877d5dd57026b30da93f6277","homepage":"https://github.com/fb55/htmlparser2#readme","_id":"htmlparser2-papandreou@3.9.1-patch1","_shasum":"33baaf61dfe43cd044d5e5b500634b654b00731e","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"papandreou","email":"andreas@one.com"},"dist":{"shasum":"33baaf61dfe43cd044d5e5b500634b654b00731e","tarball":"https://registry.npmjs.org/htmlparser2-papandreou/-/htmlparser2-papandreou-3.9.1-patch1.tgz","integrity":"sha512-FkUpWcWHEjppm6EGhcu2eO9bvbwuweI7IM+b6UDlHsVH1c7W5Ihvyd9bTNXkXmoDZnqr5lPJWTLgHcumZv5lZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE+b92mCXB7s8Pxme6pYvGoZyKqQ0WmYuR2eTxzQ/F+QAiEAwbSnw58HiCZBHEjmPnxiO6UIV2PphiXgtZH57uuyXIE="}]},"maintainers":[{"name":"papandreou","email":"andreas@one.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/htmlparser2-papandreou-3.9.1-patch1.tgz_1471444093126_0.4549530865624547"}}},"readme":"# htmlparser2\n\n[![NPM version](http://img.shields.io/npm/v/htmlparser2.svg?style=flat)](https://npmjs.org/package/htmlparser2)\n[![Downloads](https://img.shields.io/npm/dm/htmlparser2.svg?style=flat)](https://npmjs.org/package/htmlparser2)\n[![Build Status](http://img.shields.io/travis/fb55/htmlparser2/master.svg?style=flat)](http://travis-ci.org/fb55/htmlparser2)\n[![Coverage](http://img.shields.io/coveralls/fb55/htmlparser2.svg?style=flat)](https://coveralls.io/r/fb55/htmlparser2)\n\nA forgiving HTML/XML/RSS parser. The parser can handle streams and provides a callback interface.\n\n## Installation\n\tnpm install htmlparser2\n\nA live demo of htmlparser2 is available [here](http://demos.forbeslindesay.co.uk/htmlparser2/).\n\n## Usage\n\n```javascript\nvar htmlparser = require(\"htmlparser2\");\nvar parser = new htmlparser.Parser({\n\tonopentag: function(name, attribs){\n\t\tif(name === \"script\" && attribs.type === \"text/javascript\"){\n\t\t\tconsole.log(\"JS! Hooray!\");\n\t\t}\n\t},\n\tontext: function(text){\n\t\tconsole.log(\"-->\", text);\n\t},\n\tonclosetag: function(tagname){\n\t\tif(tagname === \"script\"){\n\t\t\tconsole.log(\"That's it?!\");\n\t\t}\n\t}\n}, {decodeEntities: true});\nparser.write(\"Xyz <script type='text/javascript'>var foo = '<<bar>>';</ script>\");\nparser.end();\n```\n\nOutput (simplified):\n\n```\n--> Xyz\nJS! Hooray!\n--> var foo = '<<bar>>';\nThat's it?!\n```\n\n## Documentation\n\nRead more about the parser and its options in the [wiki](https://github.com/fb55/htmlparser2/wiki/Parser-options).\n\n## Get a DOM\nThe `DomHandler` (known as `DefaultHandler` in the original `htmlparser` module) produces a DOM (document object model) that can be manipulated using the [`DomUtils`](https://github.com/fb55/DomUtils) helper.\n\nThe `DomHandler`, while still bundled with this module, was moved to its [own module](https://github.com/fb55/domhandler). Have a look at it for further information.\n\n## Parsing RSS/RDF/Atom Feeds\n\n```javascript\nnew htmlparser.FeedHandler(function(<error> error, <object> feed){\n    ...\n});\n```\n\nNote: While the provided feed handler works for most feeds, you might want to use  [danmactough/node-feedparser](https://github.com/danmactough/node-feedparser), which is much better tested and actively maintained.\n\n## Performance\n\nAfter having some artificial benchmarks for some time, __@AndreasMadsen__ published his [`htmlparser-benchmark`](https://github.com/AndreasMadsen/htmlparser-benchmark), which benchmarks HTML parses based on real-world websites.\n\nAt the time of writing, the latest versions of all supported parsers show the following performance characteristics on [Travis CI](https://travis-ci.org/AndreasMadsen/htmlparser-benchmark/builds/10805007) (please note that Travis doesn't guarantee equal conditions for all tests):\n\n```\ngumbo-parser   : 34.9208 ms/file ± 21.4238\nhtml-parser    : 24.8224 ms/file ± 15.8703\nhtml5          : 419.597 ms/file ± 264.265\nhtmlparser     : 60.0722 ms/file ± 384.844\nhtmlparser2-dom: 12.0749 ms/file ± 6.49474\nhtmlparser2    : 7.49130 ms/file ± 5.74368\nhubbub         : 30.4980 ms/file ± 16.4682\nlibxmljs       : 14.1338 ms/file ± 18.6541\nparse5         : 22.0439 ms/file ± 15.3743\nsax            : 49.6513 ms/file ± 26.6032\n```\n\n## How does this module differ from [node-htmlparser](https://github.com/tautologistics/node-htmlparser)?\n\nThis 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](https://github.com/substack/node-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.\n\nThe parser now provides a callback interface close to [sax.js](https://github.com/isaacs/sax-js) (originally targeted at [readabilitySAX](https://github.com/fb55/readabilitysax)). As a result, old handlers won't work anymore.\n\nThe `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.\n","maintainers":[{"name":"papandreou","email":"andreas@one.com"}],"time":{"modified":"2022-06-18T22:06:50.741Z","created":"2016-08-17T14:28:15.072Z","3.9.1-patch1":"2016-08-17T14:28:15.072Z"},"homepage":"https://github.com/fb55/htmlparser2#readme","keywords":["html","parser","streams","xml","dom","rss","feed","atom"],"repository":{"type":"git","url":"git://github.com/fb55/htmlparser2.git"},"author":{"name":"Felix Boehm","email":"me@feedic.com"},"bugs":{"url":"http://github.com/fb55/htmlparser2/issues"},"license":"MIT","readmeFilename":"README.md"}