自动下载图片

时间:2016-07-27 16:58:31

标签: python download urllib

我编写了这段python代码,它从图像库中下载了许多图像,并将它们保存在指定的文件夹中。代码如下所示:

import urllib.request
import cv2
import numpy as np
import os

def store_raw_images():
    neg_images_link = 'http://image-  net.org/api/text/imagenet.synset.geturls?wnid=n00464651'
    neg_images_urls =  urllib.request.urlopen(neg_images_link).read().decode()

    if not os.path.exists('neg'):
       os.makedirs('neg')

    pic_num = 1
    for i in neg_images_urls.split('\n'):
        try:
            print(i)
            urllib.request.urlretrieve(i, "neg/{}.jpg".format(pic_num))
            img = cv2.imread("neg/{}.jpg".format(pic_num) + cv2.IMREAD_GRAYSCALE)
            resized_image = cv2.resize(img, (100, 100))
            cv2.imwrite("neg/{}.jpg".format(pic_num), resized_image)
            pic_num = pic_num + 1
            print(pic_num)

        except Exception as e:
            print(str(e))

store_raw_images()

由于某种原因,图像被替换,我看不到所有图像。我一直看到一张图片1.jpg并且所有图片似乎都被替换了,但我希望图片的名称可以1.jpg2.jpg,......。

我也看到了这个警告/错误,但我不确定它是否与此问题相关。

Can't convert 'int' object to str   
http://www.azjeugd.nl/site/modules/xcgal/albums/20082009seizoen/a1/groningen_thuis/IMG_7798.jpg
  HTTP Error 403: Forbidden
  http://www.ga-eagles.nl/images/duels1e0809/gaetel6.jpg

您认为问题在哪里?

请注意,我正在递增图像编号:

        pic_num = pic_num + 1

1 个答案:

答案 0 :(得分:1)

您拥有一个try/except块中的所有内容。假设cv2.imwrite失败但所有其他行都没有任何问题,您的代码将永远不会到达picnum = picnum + 1。 尝试重新排列首先增加picnum的代码,并检查哪些行实际上会给您错误。