Python Beautiful Soup有时保存图像时没有文件扩展名,文件大小为0字节

ca1c2owp  于 2023-03-06  发布在  Python
关注(0)|答案(1)|浏览(131)

我试图刮一些图像从网站,他们中的大多数保存正确。但是,我有一个图像正在保存没有文件扩展名和文件属性说,它的大小是0字节和大小在磁盘上是288 KB。它加载一个空白图像,如果我手动添加.jpg扩展名,并试图打开它。
我也尝试保持名称不变,并在末尾添加一个数字,如filename-1.jpg或filename-2.jpg,以包含多个图像的项目。但在一些图像上,即使将数字传递给作者,它也会将其砍掉。
当我运行代码时没有错误或崩溃,我不明白为什么相同的代码会产生不同的结果。任何想法或反馈将不胜感激。
我的保存图像函数如下所示:

#dir = 'C:/Users/path'
#name = 'filename.jpg'
#name = 'filename-2.jpg'
#name = 'otherFile.jpg'
#img_url will load the correct image in the browser no issues, and I can right-click and save that image and get the .jpg file no issues.

    def save_img(self, img_url, name, dir):
        #img_url[-4:] just appends the file extension to the file name
        name = self.clean_name(name) + img_url[-4:]
        name = name.replace('/', '-')

        newImage = dir + "/" + name
        if os.path.exists(newImage) == False:
            with open(newImage, "wb") as f:  #I can check here
                f.write(requests.get(img_url).content)

#result 1:
#newImage = 'C:/Users/path/filename.jpg'
#output = 'C:/Users/path/filename' #can't open no data

#result 2:
#newImage = 'C:/Users/path/filename-2.jpg'
#output = 'C:/Users/path/filename' #can't open no data

#result 3:
#newImage = 'C:/Users/path/otherFile.jpg'
#output = 'C:/Users/path/otherFile.jpg' #works just fine
5t7ly7z5

5t7ly7z51#

我不知道它是否能解决您的问题,但您可以尝试检查正确的文件扩展名,如果不存在,请附加它。

def add_suffix(file_name, file_extension):
    if not file_name.endswith(file_extension):
        return file_name + file_extension

希望能帮上点忙。
编辑:
我想我找到了一个更好的保存文件的解决方案。您可以使用

import urllib.request

def save_img(img_url, name, dir_name):
    full_path = dir_name + name
    urllib.request.urlretrieve(img_url, full_path)

我希望现在你可以自由地刮网了:)

相关问题