python中如何去爬取http的网站图片,并把图片下载到本地!

前言:小编也是现学现卖,方便自己记忆,写的不好的地方多多包涵,希望各位大佬多多批评指正。

1.此处以布卡漫画网站为例!

import urllib.request as u  
#调用urllib文件夹(包) as  u  简化urllib.request 为 u
#request #打开主页设定请求信息,获取web页面信息
import re   #调用正则表达模块

def get_html(url):
    "我的功能是打开目标主页并获取整个html数据"
    request = u.Request(url)  #添加要下载图片地址
    request.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64;\
    x64; rv:77.0) Gecko/20100101 Firefox/77.0") #添加头部信息
                        
    response = u.urlopen(request)
    html = response.read()
    return html

#http://i-cdn.ibuka.cn/pics/223321/65614/t6501310_0014.jpg
#http://i-cdn.ibuka.cn/pics/223321/65614/t6501310_0015.jpg
#http://i-cdn.ibuka.cn/pics/223321/65595/t6406261_0002.jpg

def get_imglist(html):
    "我的功能是负责整个页面的图片地址并做出一个列表"
    allimglist = []
    
    imglist = re.findall(b"http://i-cdn.ibuka.cn/pics/\d{6}/\d{5}/\w{13}.jpg",html) 
    #二进制的地址列表,{60} 是通过 print(len(u27xxx.jpg) 看出来的
    #print(imglist)
    for i in imglist:
        allimglist.append(str(i,encoding='utf8')) #完整的地址拼接
    print(allimglist)
    #return allimglist

    
def get_imgs(imglist):
    "我的功能是复制根据图片地址列表下载图片"
    num = 0
    for url in imglist:
        num += 1
        snum = str(num)  #将整数转成字符串
        snum = snum.zfill(2) #要求字符串必须满足2为,不满足前面补零(01,02,03)
        imginfo = get_html(url) #调用函数返回图片2进制信息
        with open("%s.jpg" %snum,"wb") as f:
            f.write(imginfo)
    
if __name__ == "__main__":
    url = "http://www.buka.cn/view/223321/65614.html"
    #url = "http://www.buka.cn/view/221735/65538.html"
    html = get_html(url)
    imglist = get_imglist(html)
    get_imgs(imglist)

如果想更换网站爬取图片,前提不带https 的网站,需要将url 地址转变,同时对应的imglist = re.findall(b"xx") 正则表达式也要发生改变。至于规则则根据你爬取的网站的图片规则取定义。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值