загрузить изображение с URL-адреса JSON с urllib

и спасибо, что прочитали этот пост.

Я хотел бы загрузить изображение с 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'

Я ищу решение, но потратил около часа и ничего не нашел.

Спасибо за ответ :)


person Loïs Faidherbe    schedule 23.02.2018    source источник
comment
вы можете привести пример переменной url?   -  person Lupanoide    schedule 23.02.2018


Ответы (1)


Кажется, в вашем URL есть кавычка

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

вы видите% 22http

попробуй это

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

я надеюсь, что это исправит

person AndyB    schedule 23.02.2018