正则式学习小结

说明:以下内容学习自:http://www.imooc.com/

由于这个视频教程已经说的比较详细,请参考原视频教程,这里为总结

1、简介:为何需要正则表达式,为了减少根据不同需求不断编制函数的麻烦,通过制定正则式规则,可以巧妙且有效的进行归纳总结。

2、Python的RE模块,RE是正则表达式的英文首字母缩写。最常用的就是re.match()函数了,其次是ma.group(),用来查阅匹配结果。

3、【重点】RE的语法:

4、 RE其他模块:

  • search(pattern, string, flags=0) 用来查找满足pattern的第一个返回值。
  • findall(pattern, string, flags=0)用来查找满足pattern的所有返回值。
  • sub(pattern, repl, string, count=0, flags=0)将字符串中匹配正则表达式的部分替代为其他值,并允许引入函数模式来进行替代。
  • split(pattern, string, maxsplit=0, flags=0)根据匹配分割字符串,返回分割字符串组成的列表。

5、练习,抓取慕课网的http://www.imooc.com/course/list的图片。主要流程为:

  1. 抓取网页,
  2. 获取图片地址,
  3. 抓去图片内容并保存到本地,

结果如下:

6、源代码:

import re
import urllib2

test_url = 'http://www.imooc.com/course/list'
req = urllib2.urlopen(test_url)
buf = req.read()
print buf

listurl = re.findall(r'http:.+\.jpg', buf)
print listurl

i = 0
for url in listurl:
    f = open(str(i)+'.jpg', 'w')
    req = urllib2.urlopen(url)
    buf = req.read()
    f.write(buf)
    i += 1

7、PS,再一次的,发现在Win下的结果出现乱码,而且抓的图片也是,而在Linux下是正常的。得找下原因。