【问题标题】:Urllib caching image unwantedly?Urllib 不必要地缓存图像?
【发布时间】:2018-09-03 18:30:49
【问题描述】:

我正在编写一个简单的脚本,它应该从 Unsplash 下载 N 个随机图像。它有效——但只有大部分。它总是下载 N 个相同的图像。我相信urllib 正在缓存图像,但即使在尝试urllib.urlcleanup() 之后,它仍然会下载相同的 N 个图像。你能帮我么?这是我的代码:

import urllib

num = 4
for i in range(1, num + 1):
    print("Downloading image #" + str(i) + "...")
    urllib.urlretrieve("https://source.unsplash.com/random", "image" + str(i) + ".jpg")
    urllib.urlcleanup()

编辑:有人指出我得到了 404 页面。是的,我是,但是在我刚刚解决了那个问题之后,主要问题仍然存在。

【问题讨论】:

    标签: python image caching download urllib


    【解决方案1】:

    看看你实际得到的图像。它们都是一样的,因为这似乎是 Unsplash 404 页面,表明 Unsplash 没有将其识别为识别图像。您用于随机图像的 URL 可能不正确。

    您可能会发现this page on downloading random images 很有帮助。

    【讨论】:

    • 你是对的,但我仍然遇到我提到的问题。
    • 你读过我指给你看的那篇文章吗?您使用的 URL 格式应为 https://source.unsplash.com/collection/CCCCC/N,其中 CCCCCC 是收藏编号,N 是某篇文章的编号。如果您想在整个站点中进行选择,您也必须随机化集合,并采取预防措施,不要超过集合大小。
    • 其实是的。谢谢你。我创建了这个:urllib.urlretrieve("https://source.unsplash.com/collection/466697/" + str(i), os.path.join("images", "image" + str(i) + ".jpg"))
    • 是的,我通过实验发现 URL 缓存确实击败了浏览器中的随机性。但是,您可以通过请求https://source.unsplash.com/random/1.../random/2 等从整个站点获取不同的图像,这样您就可以从所有集合中提取。
    【解决方案2】:

    替换

    urllib.urlretrieve("https://source.unsplash.com/random" + str(i), "image" + str(i) + ".jpg")
    

    urllib.urlretrieve("https://source.unsplash.com/random", "image" + str(i) + ".jpg")
    

    【讨论】:

    • 就像holdenweb一样,你是对的,但我仍然遇到我提到的问题。
    • 我试过你的脚本。它每次都为我下载不同的图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 2017-12-18
    • 2014-03-12
    • 1970-01-01
    • 2012-11-12
    • 2015-08-29
    相关资源
    最近更新 更多