js正则表达式之爬虫

2018-06-07  本文已影响0人  信仰与初衷

前言

通过爬虫爬去网页的dom之后就需要用正则来获取相关的信息,下面来说下正则表达式在爬虫中的应用

匹配

对于Html来说,一般需要匹配的就是相应DOM结构,比如标签属性,内容和数目之类的。

拿一个简单的标签来说比如<span>username</span>,我们想要拿到username这个内容来用正则实现。
这里要先补充一些需要使用的或者比较关键的正则关键词:

上面几个概念就是我们所需要的所有东西了。

接下里开始匹配span标签并且取出里面的内容

<span>username</span>

使用下面的正则即可,其中非贪婪模式很简单的避免了多个相同标签时匹配不正确的问题

/<span>(.*?)<\/span>/

如果要取出某些属性的标签比如

<span id="user">username</span>

则可以使用如下正则

/<span id="(.*?)">(.*?)<\/span>/

这样就能够简单快速解决html里面各种标签的数据获取问题

筛选

对于匹配出来的数据,如果我们需要全局匹配,可以使用String.match(RegExp)方法。不过该方法只能获取一次的匹配结果,如果需要匹配大段文本中多次的结果就需要使用RegExp.exec(string)方法进行匹配。

var html = '<span id="sp_1">a</span><span id="sp_2">b</span><span id="sp_3">c</span>';
var reg = /<span id="(.*?)">(.*?)<\/span>/g;
var result;
while ((result = reg.exec(html)) != null)  {
      console.log(result[1],result[2])
}
//sp_1 a
//sp_2 b
//sp_3 c

这样,对于绝大部分网页内容分析筛选的工作都可以使用简单的正则快速的完成了。

上一篇 下一篇

猜你喜欢

热点阅读