美文网首页
js正则表达式之爬虫

js正则表达式之爬虫

作者: 信仰与初衷 | 来源:发表于2018-06-07 18:06 被阅读0次

前言

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

匹配

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

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

  • 自定义匹配多种字符 - [ ]
    • 使用方括号 [ ] 包含一系列字符,能够匹配其中任意一个字符。
    • 用 [^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。
    • 虽然可以匹配其中任意一个,但是只能是一个,不是多个。
  • 修饰匹配次数 - {}?+*
    • {n} - 表达式重复n次,比如:”/w{2}” 相当于 “/w/w”;”a{5}” 相当于 “aaaaa”
    • {m,n} - 表达式至少重复m次,最多重复n次,比如:”ba{1,3}”可以匹配 “ba”或”baa”或”baaa”
    • {m,} - 表达式至少重复m次,比如:”/w/d{2,}”可以匹配 “a12”,”_456”,”M12344”…
    • ? - 匹配表达式0次或者1次,相当于 {0,1},比如:”a[cd]?”可以匹配 “a”,”ac”,”ad”
    • + - 表达式至少出现1次,相当于 {1,},比如:”a+b”可以匹配 “ab”,”aab”,”aaab”…
    • ***** - 表达式不出现或出现任意次,相当于 {0,},比如:”/^*b”可以匹配 “b”,”^^^b”…
  • 用于group的字符 - ()
    • 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
    • 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
  • 用于扩展表达式含义
    • g:代表可以进行全局匹配
    • i:代表不区分大小写匹配
    • m:代表可以进行多行匹配

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

接下里开始匹配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

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

相关文章

  • 用Java实现网络爬虫二之Java正则表达式

    title: 用Java实现网络爬虫二之Java正则表达式tags: Java 网络爬虫 Spider Crawl...

  • 正则

    1 JS之正则表达式15个常用的javaScript正则表达式

  • js正则表达式之爬虫

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

  • 爬虫处理——结构化数据操作

    爬虫处理之结构化数据操作 目录清单 正则表达式提取数据 正则表达式案例操作 Xpath提取数据 Xpath案例操作...

  • 爬虫0040:数据筛选

    爬虫处理之结构化数据操作 ——编辑:大牧莫邪 目录清单 正则表达式提取数据 正则表达式案例操作 Xpath提取数据...

  • JS正则表达式的骚操作

    参考资料 《JS正则表达式的分组匹配》《正则表达式之捕获组/非捕获组介绍》《正则表达式中(?:pattern)、(...

  • scrapy学习笔记(五)

    面对实际问题中的问题,用智慧解决。 这篇讲一个python调用scrapy执行爬虫,并用正则表达式方法提取JS信息...

  • 爬虫处理——结构化数据操作

    爬虫处理之结构化数据操作 目录清单 1.正则表达式提取数据 2.正则表达式案例操作 1.Xpath提取数据 Xpa...

  • 爬虫入门(1)-使用re和requeset

    前言 编写爬虫需要了解正则表达式,网上内容很多,但在爬虫应用中用到最多的正则表达式是 ‘(.*?)’ 在Pytho...

  • 爬虫初窥

    静态爬虫和动态爬虫 静态爬虫:页面数据的展示不依靠js等和后台的交互。动态爬虫:页面的数据需要通过js,ajax等...

网友评论

      本文标题:js正则表达式之爬虫

      本文链接:https://www.haomeiwen.com/subject/rxxnsftx.html