• 寒假大数据学习笔记五


      今天学习内容为正则表达式,这一块我一整天竟然没有学完。

      在一开始爬取网页匹配有用的字符串时,我用的是find方法,如下:

     1 def find_image(page_url):
     2     html = url_open(page_url).decode("utf-8")
     3     image_addr = []
     4 
     5     a = html.find('img style="cursor:pointer;"')
     6     while a != -1:
     7         b = html.find(".jpg", a, a + 255)
     8         if b != -1:
     9             image_addr.append(html[a + 133:b + 4])
    10         else:
    11             b = a + 133
    12 
    13         a = html.find('img style="cursor:pointer;"', b)
    14 
    15     for each in image_addr:
    16         print(each)
    17 
    18     return image_addr

      可以看到的是,为了得到我想要的链接,我要用find方法检索全文,并通过关键词“img style="cursor:pointer;"

    ”和“.jpg”来锁定链接,这样做十分不方便,因为很难保证得到的是想要的链接,一旦有非链接匹配成功,同样也会被扒下来,这样会对清洗数据造成很大的麻烦。而正则表达式,无疑会方便许多。

      但正则表达式的逻辑非常麻烦(个人认为),举例如下:

      想要匹配IP地址的正则表达式,我穷尽脑汁写出的如下: string = "((25[0-5]|2[0-4]d|[01]{0,1}d{0,2}d).){3}(25[0-5]|2[0-4]d|[01]{0,1}d{0,2}d)" ,IP地址的格式为 a.b.c.d ,其中abcd分别都是0-255中的某一个数字。这个式子分为3部分:第一部分是 ((25[0-5]|2[0-4]d|[01]{0,1}d{0,2}d).) ,

    这表示a.,而第一部分加上 {3} 则代表将第一部分重复3次,这就变成了 a.b.c. ,然后在加上第一部分,整个IP地址匹配正则式就完成了。

      正则表达式几乎应用于所有语言,所以十分重要。

      PS.

        正则表达式测试工具网址

  • 相关阅读:
    详解javascript实现自定义事件
    详谈LABJS按需动态加载js文件
    SeaJS入门教程系列之SeaJS介绍(一)
    Underscore.js 入门
    Underscore.js (1.7.0)-集合(Collections)(25)
    Underscore.js (1.7.0)-函数预览
    js/jquery判断浏览器的方法小结
    ParNew收集器
    CMS(Concurrent Mark-Sweep)
    java集合类深入分析之Queue篇(Q,DQ)
  • 原文地址:https://www.cnblogs.com/YXSZ/p/12257293.html
Copyright © 2020-2023  润新知