举一个大略的运用处景:假设有一天领导须要你网络一下线上页面已存在的静态资源链接(js、css、img),你们的页面很多,而且每个页面的代码量很大(比如上万行),这种情形下你总不能人肉去搜索,那么此时htmlparser这个模块就可以派上用场了。

大略利用

安装命令

npm install htmlparser

图1

正则过滤html标签若何解析html标签内容手写正则表达式htmlparser模块帮你解决 PHP

图1中我们利用htmlparser模块解析一个i.html文件,其内容如下:

图2

解析结果如下:

图3

图3所示是个工具(此处序列化了便于显示),遍历这个工具就可以办理本文开头所说的问题,这个模块的用法非常的大略。

事理剖析

回到图1,htmlparser模块给我供应了一个Parser布局函数,这个布局函数是初始化的入口!
它大概长这个样子:

function Parser(handler) { this._handler = handler;}

Parser接管一个参数handler,这个handler必须是一个工具,这个工具必须定义以下几个方法

reset方法紧张做一些重置事情;done方法完成解析后调用,此处可以实行自定义回调函数;writeTag方法处理tag标签;writeText方法处理纯文本信息writeComment方法处理注释信息;writeDirective方法处理<!...>这样的标签信息,比如<!DOCTYPE html>。

图1中我们利用的是模块内部供应的DefaultHandler,我们当然也可以自己定义handler。
用别人的handler有时并不能完备知足自己的业务场景,那么我们操作一把,代码如下:

图4

图4中我们自定义一个handler——CustomHandler,我们先运行一下看看各个方法都输出了什么?

图5

图5中CustomHandler的各个方法按照原始字符串的顺序依次打印出了每个解析结果,这些解析结果是parser工具为我们自动天生的,解析的事理便是正则匹配。
我们可以在自定义handler的各个函数方法中做一些分外处理,然后把终极的结果通过done函数输出出去。

图4中的parseComplete方法也可以用以下逻辑代替,

parser.reset();parser.parseChunk(html);parser.done();

这个模块除了可以在node环境中利用,它同时也可以在浏览器中利用,用法如下:

图6

图7

把稳,如果在浏览器中利用,模块的所有API都挂在了Tautologistics.NodeHtmlParser这个工具上,其它用法同等。

总结

须要我们去解析html内容的场景非常多,之前我们更多的是利用自己写的正则表达式去做,麻烦并且随意马虎出错。
现在我们理解了htmlparser模块,往后就可以直策应用它去办理问题。