【Python】urllib爬取动漫图片

首先附上需要爬取图片的网站,应该算是个冷门网站,够练手用的了,我的博客图片大部分来自于这里

二次元图片网站

在这里插入图片描述

筛选src里的数据

用par =r’<img src="[^"]+.jpg">'可以筛选出带有里面的内容

html='dasdas <img src="Hello.jpg">adasdassdasdasd<img src="Hello123.jpg">'
par =r'<img src="[^"]+\.jpg">'
html=re.findall(par,html)

筛选网页中src数据

切记:<img后的">“绝对不可加上,否则无法匹配,只需要写上前一部分即可
par =r’<img class=“pic-large” src=”(.*?)"

封装函数后的爬取单个网页图片集代码:

import urllib.request
import re                  #成功爬取当前页面所有图片地址

def open_url(url):
	 headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
    }
    response =urllib.request.Request(url = url ,headers = headers)
    webPage = urllib.request.urlopen(response)
    html=webPage.read()
    html=html.decode("utf-8")
    return html



def get_img(html):
    par =r'<img class="pic-large" src="(.*?)"'
    html=re.findall(par,html)
  
    for each in html:
        print(each)
        response =urllib.request.urlopen(each)
        cat_img =response.read()
        with open('cat_200_300.jpg','wb') as f:
            f.write(cat_img)


if __name__ == '__main__':
    url="http://www.win4000.com/wallpaper_detail_160820_3.html"
    get_img(open_url(url))

开始批量爬图

首先来分析下我们爬取的网站:爬取的二次元网站
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分析它的url:
1、这里总共八张图片,第一张的地址后缀没有_01,第二张到第八章都有2-8的后缀,所以分两部分爬
2、爬首页
在这里插入图片描述
爬后面七张图片
在这里插入图片描述

下面贴出代码:

import urllib.request
import re                  #成功爬取当前页面所有图片地址

def open_url(url):
    response =urllib.request.urlopen(url)
    html=response.read()
    html=html.decode("utf-8")

    return html



def get_img(html):
    par =r'<img class="pic-large" src="(.*?)"'
    html=re.findall(par,html)
  
    for each in html:
        print(each)
        filename = each.split("/")[-1]
        urllib.request.urlretrieve(each,filename,None)

if __name__ == '__main__':
    url="http://www.win4000.com/wallpaper_detail_160877.html"
    get_img(open_url(url))
    for num in range(2,9):
        url="http://www.win4000.com/wallpaper_detail_160877_%d"%(num)
        html=".html"
        text=url+html
        print(text)
        get_img(open_url(text))

可一次性爬取八张图,后续只要更换该网址的其他界面即可
在这里插入图片描述
全部是1920*1080的高清照片
(以前爬过百度搜狗图片,质量太差)

所以你说我博客上的动漫图片哪来的,这就是答案

用open的方法可以在指定文件夹(同等目录)放入相应文件

f=open("hello/tello.jpg","w")
constant="i love you"
f.write(constant)
f.close()
#可以写入任何硬盘当中

终极封装完成后的代码

(你只需要输入它的首页地址即可)

import urllib.request
import re                  #成功爬取当前页面所有图片地址

def open_url(url):
    response =urllib.request.urlopen(url)
    html=response.read()
    html=html.decode("utf-8")

    return html



def get_img(html):
    par =r'<img class="pic-large" src="(.*?)"'
    html=re.findall(par,html)
  
    for each in html:
        print(each)
        filename = each.split("/")[-1]
        urllib.request.urlretrieve(each,filename,None)

if __name__ == '__main__':
    while(1):
        word=input(("请输入所要图片的首页网址:"))

        url1=word[:-5]
        url2=".html"
        url=url1+url2
        get_img(open_url(url))
        for num in range(2,9):
            url=url1+"_"+str(num)
            html=".html"
            text=url+html
            print(text)
            get_img(open_url(text))

这是我第一次完完全全封装好代码,自己研究某个网站的一些属性,到一点点琢磨,终于把那种本来需要机械重复无数次的操作,变为高效又简洁的代码。尽管代码还不够强健
但是通过自己一点一点完善推敲出来的感觉就是不一样

在这里插入图片描述
加入死循环后只需重复添加首页地址即可,看中那个首页就直接下载下来

在这里插入图片描述
完美,改天换别的网站继续爬!!!!加油
爬图一时爽,一直爬图一直爽!!!!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值