python实现下载任意网站所有图片

操作演示

在这里插入图片描述

视频中爬取网站地址:
https://www.ivsky.com/tupian/

完整代码

# !/user/bin/env python
# -*- coding: utf-8 -*-
# des: 下载任何网页的图片
import re

import requests


def download_img():
    error_count = 0
    success_count = 0
    url = input('请输入您要下载的图片的网址:')
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75'
    }

    web_text = requests.get(url, headers=headers).text

    ex = '<img.*?src="(.*?)".*?'
    img_list = re.findall(ex, web_text)
    print('图片地址:', img_list)
    if len(img_list) == 0:
        print('该网站有反爬虫机制,爬取失败,请换个网站继续尝试。')

    for img in img_list:
        try:
            # 补充协议头
            if not (img.startswith('http') or img.startswith('https')):
                img = 'http:' + img
            img_binary = requests.get(img, headers=headers).content
            # 切割出最后一个字符串
            file_name = img.split('/')[-1]
            # 切割 query字符
            file_name = file_name.split('?')[0]
            with open(f'./img/{file_name}', 'wb') as fp:
                fp.write(img_binary)
            print(file_name, ',下载成功')
            success_count += 1
        except Exception as e:
            print(e)
            error_count += 1
        continue
    print('下载图片结束!')
    return success_count, error_count


if __name__ == '__main__':
    success_count, error_count = download_img()
    print(f'总计下载:{success_count},下载失败:{error_count}')

备注说明

有些网站由于具有反爬虫机制,所以会导致爬取失败。例如某度图片。其他均正常。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏2同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值