用Python2.7.5抓取某某网的图片

  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将文件拉出主机文件路径下。

用Python2.7.5抓取某某网的图片_第1张图片

用Python2.7.5抓取某某网的图片_第2张图片

 用Python2.7.5抓取某某网的图片_第3张图片

感兴趣的同学,可以自己去爬一爬感兴趣的网站图片和音乐等。

 感谢某网Meshare_huang老师。

你可能感兴趣的:(爬虫,python)