zoukankan      html  css  js  c++  java
  • 寒假大数据学习笔记五

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

      在一开始爬取网页匹配有用的字符串时,我用的是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.

        正则表达式测试工具网址

  • 相关阅读:
    制作你的第一个HTML 5游戏
    拒绝臆想,让我们脚踏实地做设计!
    HTML 5或者Silverlight?
    如何替换掉回车键
    杀死团队的武器与修复团队的方法
    Google趋势中显示jQuery是最流行的JavaScript框架
    关于脚本载入器的思考
    简化Web开发的12个HTML5CSS框架
    线框图(demo草图)制作的总结
    江苏南通周边经纬度
  • 原文地址:https://www.cnblogs.com/YXSZ/p/12257293.html
Copyright © 2011-2022 走看看