Python批量爬取某图片网站图片

来源:互联网 发布:淘宝真鞋店铺 编辑:程序博客网 时间:2024/06/03 20:31

在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,但是通常用鼠标右键的方式保存,但是有时候没有另存为选项,且一张一张的保存,耗时耗力。本文将以python批量爬取某图片网站的图片为例,演示如何批量保存某网站的图片。

以爬取美女图片网为例:http://www.mm131.com/
这里写图片描述

一、获取网站页面数据

def getHtml(url):    page = urllib.urlopen(url)    html = page.read()    return html

二、获取想要的图片数据

通过网站页面数据我们得知图片信息如下:

<div class="content-pic"><a href='1_2.html'><img alt="宝马小妹妩媚自拍(图1)" src="http://img1.mm131.com/pic/01/1.jpg" /></a></div>

修改代码:

def getImg(html,filename,dir):    #判断文件夹是否存在,如果不存在则新建    if not os.path.isdir(dir):        os.mkdir(dir)    reg = r'src="(.+?\.jpg)"'    imgre = re.compile(reg)    imglist = re.findall(imgre,html)    for imgurl in imglist:        urllib.urlretrieve(imgurl,dir+'/%s.jpg' % filename)        break    return imglist

因为每个页面都有很多张照片,但我们只想要第一张大图,所以只需要保存第一张图片即跳出当个页面图片获取;批量获取会有多个系列图片,故新建文件夹分系列保存图片。

三、批量保存图片数据

根据分析每张图片网页地址,得出每个系列图片仅需要在当个系列地址后加“_n.html”;

def geturl(dir):    y = 1    strA = "start"    while y>=1:         if y==1:            print dir            html = getHtml("http://www.mm131.com/qingchun/"+str(dir)+".html")        else:            html = getHtml("http://www.mm131.com/qingchun/"+str(dir)+"_"+str(y)+".html")            imglist = getImg(html,y,str(dir))#如果mglist不为空,则保存图片            if imglist:                getImg(html,y,str(dir))            else:                strA ="end"                return strA        y=y+1

四、通过shell脚本去掉空文件夹

#!/bin/bash deleteempty() {  find ${1:-.} -mindepth 1 -maxdepth 1 -type d | while read -r dir  do    if [[ -z "$(find "$dir" -mindepth 1 -type f)" ]] >/dev/null    then      echo "$dir"      rm -rf ${dir} 2>&- && echo "Empty, Deleted!" || echo "Delete error"    fi    if [ -d ${dir} ]    then      deleteempty "$dir"    fi  done}deleteempty

最后则爬取了以下图片:
这里写图片描述

以上则为批量保存图片的示例,大家可以以此为例爬取自已想要的视频网站的图片,以下地址为完整代码:
http://download.csdn.net/download/oolovexx/10011837

原创粉丝点击