今天刚学习完正则表达式中的基本语法,于是为了练习正则表达式的使用,便使用正则表达式来进行了一个小项目的编写。
实践思路:
1、确定要抓取的网页URL地址
2、获取图片地址
3、抓取图片地址并保存到本地
首先我们确定目标网页:
http://www.imooc.com/course/list
接着我们需要查看URL中对应的图片信息:
你会发现图片的URL有两个,而且还是一模一样的。
准备工作做好之后,我们就需要对此进行编码工作了:
我们要使用到的Python模块有urlib以及re模块:
import urlib
import re
抓取目标网页:
req = urlib.request.urlopen('http://www.imooc.com/course/list')
buf = req.read()
使用正则表达式找到整个页面的所有图片链接:
buf = buf.decode('utf-8') #特别需要注意,python3和python之间的区别
listurl = re.findall(r'//.+\.jpg',buf)
我们获取到的图片路径不利于我们下载图片,所以我们必须进行URL提取:
res = []
for url in listurl:
a = re.findall(r'//.+\.jpg',url)
res.append(a[0])
这样就得到了所有图片的URL,因此下一步就是读取图片并保存在本地:
注:其中需要注意的是i的值为0,且下载的时候需要加上"http:"前缀才能正确的进行下载。
总结:
通过对这次小案例的学习,对正则表达式也有了一定的练习与巩固,特别需要注意的是Python3.x与Python2.x之间的差别,以及对正则表达式的使用一定要掌握!