Python批量爬取某图片网站图片 - Go语言中文社区

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


在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,但是通常用鼠标右键的方式保存,但是有时候没有另存为选项,且一张一张的保存,耗时耗力。本文将以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

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/OOloveXX/article/details/78180998
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-08 10:57:05
  • 阅读 ( 1390 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢