Python每日一练(17)-使用urlretrieve实现直接远程下载图片

在实现爬虫任务时,经常需要将一些图片下载到本地当中。那么在python中除了通过open()函数,以二进制写入方式来下载图片以外,还有什么其他方式吗?本文将使用urlretrieve实现直接远程下载图片。

代码实现

在python中除了使用open()函数实现图片的下载,还可以通过urllib.request模块中的urlretrieve实现直接远程下载图片的操作。以远程下载某网页外设产品图片为例,代码如下:

import requests
import urllib.request
import os  # 系统模块
import shutil  # 文件夹控制


def download_pictures(url):
    headers = {
        "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) "
                      "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"}
    response = requests.get(url, headers=headers)  # 发送网络请求 获取响应
    if response.status_code == 200:  # 判断请求是否成功
        # print(response.json())
        # 每次获取数据之前,先将保存图片的文件夹清空 在创建目录
        if os.path.exists("img_download"):  # 判断文件夹是否存在
            shutil.rmtree("img_download")  # 存在则删除
            os.makedirs("img_download")  # 重新创建
        else:
            os.makedirs("img_download")  # 不存在 直接创建
        content = response.json()["products"]  # 获取响应内容
        print(content)
        for index, item in enumerate(content):
            # 图片地址
            img_path = "http://img13.360buyimg.com/n1/s320x320_" + item["imgPath"]
            # print(item["imgPath"])
            # 根据下标命名图片名称
            urllib.request.urlretrieve(img_path, "img_download/" + "img" + str(index) + ".jpg")
    else:
        print("请求失败")


if __name__ == '__main__':
    download_pictures("https://ch.jd.com/hotsale2?cateid=686")

运行结果如下图所示:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章