使用 urllib 从 JSON url 下载图像

洛伊丝·法德赫布

感谢您阅读这篇文章。

我想从 JSON url 下载图像,但我不明白为什么检索功能不能正确读取我的 url。我试图将网址粘贴到检索功能中,例如:

testfile.retrieve("http://fishbase.org/images/thumbnails
/jpg/tn_Quatr_f0.jpg", "tmp/images/full/fish")

它工作得很好。

import urllib
import json

with open('fiche.json') as json_data:
    d = json.load(json_data)
    for obj in d:
        name = json.dumps(obj['taxonomy'][0])
        url = json.dumps(obj['image_urls'][0])
        print(name)
        print(url)
        testfile = urllib.URLopener()
        testfile.retrieve(url, "tmp/images/full/fish") 

我现在知道它会保留我 Json 的最后一张图片,我会在解决第一个问题后修复它。

JSON :

[
{"fish_url": "http://fishbase.org/Summary/SpeciesSummary.php?id=16520", "taxonomy": ["Quassiremus ascensionis"], "image_urls": ["http://fishbase.org/images/thumbnails/gif/tn_OPHICHT0.gif"]},
{"fish_url": "http://fishbase.org/Summary/SpeciesSummary.php?id=14873", "taxonomy": ["Quinca mirifica"], "image_urls": ["http://fishbase.org/images/thumbnails/gif/tn_APOGONT0.gif"]},
{"fish_url": "http://fishbase.org/Summary/SpeciesSummary.php?id=27173", "taxonomy": ["Quassiremus polyclitellum"], "image_urls": ["http://fishbase.org/images/thumbnails/gif/tn_OPHICHT0.gif"]},
{"fish_url": "http://fishbase.org/Summary/SpeciesSummary.php?id=3896", "taxonomy": ["Quietula y-cauda"], "image_urls": ["http://fishbase.org/images/thumbnails/gif/tn_GOBIIDT0.gif"]},
{"fish_url": "http://fishbase.org/Summary/SpeciesSummary.php?id=25547", "taxonomy": ["Quassiremus evionthas"], "image_urls": ["http://fishbase.org/images/thumbnails/jpg/tn_Quevi_u0.jpg"]},
{"fish_url": "http://fishbase.org/Summary/SpeciesSummary.php?id=62532", "taxonomy": ["Quietula guaymasiae"], "image_urls": ["http://fishbase.org/images/thumbnails/jpg/tn_Qugua_u0.jpg"]},
{"fish_url": "http://fishbase.org/Summary/SpeciesSummary.php?id=13924", "taxonomy": ["Quassiremus nothochir"], "image_urls": ["http://fishbase.org/images/thumbnails/jpg/tn_Qunot_u1.jpg"]},
{"fish_url": "http://fishbase.org/Summary/SpeciesSummary.php?id=62338", "taxonomy": ["Qianlabeo striatus"], "image_urls": ["http://fishbase.org/images/thumbnails/gif/tn_CYPRINT0.gif"]},
{"fish_url": "http://fishbase.org/Summary/SpeciesSummary.php?id=27728", "taxonomy": ["Quintana atrizona"], "image_urls": ["http://fishbase.org/images/thumbnails/jpg/tn_Quatr_f0.jpg"]}
]

我的请求的结果是:

"Quassiremus ascensionis"
"http://fishbase.org/images/thumbnails/gif/tn_OPHICHT0.gif"
Traceback (most recent call last):
  File "dlimg.py", line 12, in <module>
    testfile.retrieve(url, "tmp/images/full/fish")
  File "/usr/lib/python2.7/urllib.py", line 245, in retrieve
    fp = self.open(url, data)
  File "/usr/lib/python2.7/urllib.py", line 210, in open
    return self.open_unknown(fullurl, data)
  File "/usr/lib/python2.7/urllib.py", line 222, in open_unknown
    raise IOError, ('url error', 'unknown url type', type)
IOError: [Errno url error] unknown url type: '%22http'

我搜索了一个解决方案,但我花了大约 1 个小时却没有找到任何东西。

谢谢你的回答:)

安迪

您的网址中似乎有“引号

IOError: [Errno url error] unknown url type: '%22http'

你看到 %22http

试试这个

testfile.retrieve(url.replace('"',''), "tmp/images/full/fish") 

我希望它修复

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用urllib 2在django-python 2.7中使用url下载和上传图像

来自分类Dev

如何使用urllib 2在django-python 2.7中使用url下载和上传图像

来自分类Dev

使用python urllib从url下载图像但收到HTTP错误403:禁止

来自分类Dev

使用Pillow和urllib从URL打开图像?

来自分类Dev

使用ImageLoader从AWS url android下载图像

来自分类Dev

使用Perl通过URL下载图像

来自分类Dev

使用C#从URL下载.webp图像

来自分类Dev

使用ImageLoad(Android)下载图像后下载URL

来自分类Dev

urllib 无法下载某些图像

来自分类Dev

在python 2.7中使用urllib3从url下载.txt文件?

来自分类Dev

使用Urllib下载图片时出现IOError

来自分类Dev

使用Python从URL下载图像会导致损坏的结果

来自分类Dev

如何使用Carrierwave下载和存储远程图像URL

来自分类Dev

使用NodeJS从URL下载JPG时图像损坏

来自分类Dev

通过url下载图像,或使用base64进行转换

来自分类Dev

如何使用 Retrofit 从 URL 下载图像并设置为通知图标

来自分类Dev

从URL Python下载图像

来自分类Dev

从URL Flutter下载图像

来自分类Dev

从URL同步下载图像

来自分类Dev

Android从URL下载图像

来自分类Dev

使用axios从json url获取图像

来自分类Dev

从json,android下载图像

来自分类Dev

从JSON下载图像

来自分类Dev

使用Python下载图像

来自分类Dev

无法使用urllib2下载整个文件

来自分类Dev

使用urllib2下载zipfile失败

来自分类Dev

urllib3使用指定的用户代理下载文件

来自分类Dev

使用urllib2和/或wget自动下载文件

来自分类Dev

如何使用urllib3下载文件?