Hi,各位网友很久没有更新自己的技术博客了,也是因为工作和个人学习的原因,准备报考计算机四级网络工程师和高级项目管理师的原因,基本上除了工作时间,省下来就是看书时间。本人在国企里面上班,每天朝九晚五,但是对于IT来说,事情不多,剩下的时间就是充实自己的技能包。国企基本上就是福利待遇都有,交通补贴通讯补贴员工生日过节福利,但是工资是少的可怜。碰到一个很好董事长,待我很好,在生活上面帮了一把,所以一直待着付出工作成果,回馈董事长。
进入正题吧,最近复习一下正则表达式,接着利用正则表达式来抓取最新某课网的图片并保存到本地上。
运行环境:centos6.5 python2.7.5
代码块:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
import urllib2
#抓取网站的图片地址
req = urllib2.urlopen('https://www.imooc.com/course/list')
buf = req.read()
listurl = re.findall(r'\/\/img.+\.jpg',buf)
#添加字符拼成可以访问的http地址
urls=[]
for url in listurl:
url = "https:" + url
urls.append(url)
print urls
#设置初始变量,将每个图片按顺序保存到本地中
i=0
for url in urls:
f = open(str(i)+'.jpg','w')
req = urllib2.urlopen(url)
buf =req.read()
f.write(buf)
i+=1
print "爬取图片完毕"
代码详细解释:
引用re,urllib2模块,re是正则表达式的模块,urllib2是抓取网站信息的模块。
首先定义变量req接受urllib2抓取到的数据,保存到buf中,在用正则表达式re模块中的findall方法,匹配值的正则表达式为(\/\/img.+\.jpg) 在buf变量中进行匹配。这里我用\l来转义两个//。
注意:抓取网站的数据一定要看清楚数据的类型和数据字符串,必要需要转化一下字符的类型。
然后大家有兴趣打印一下变量listiurl,这里面全部是网站图片的地址,但是地址前面缺少http开头,我就用一个for循环加入到新的列表中。
最后增加一个初始变量,用来记录每个图片的名字,在用文件方法写入本地中。当然每个人命名不一样,可以自由优化。
成果展示:
执行我的代码,图片保存在本地文件夹中。 可以使用xftp将文件拉出主机文件路径下。
感兴趣的同学,可以自己去爬一爬感兴趣的网站图片和音乐等。
感谢某网Meshare_huang老师。