请求递归图像下载

时间:2018-03-20 19:21:40

标签: python-3.x python-requests

我正在尝试使用python 3.5和请求从openi(https://openi.nlm.nih.gov/index.php)下载图像。我正在使用他们的rest API,如下所示:

resp = requests.get("http://openi.nlm.nih.gov/retrieve.php", 
       params = {"query":"Feulgen", "m": 1, "n": 12})
print(resp.content)

这给了我一个json文件,其中包含我想要的图像的文本信息(包括他们的.png文件名),但我真的想自己下载图像。

我是否必须根据JSON中列出的特定网址下载每个图片,或者是否有办法进行某种批量下载"对于此查询中出现的图像?

我看到this post关于使用请求下载图片,但似乎我需要.png或.jpeg或.whatever网址。有没有人知道如何在没有单独图像URL的情况下获取图像?

提前致谢。

1 个答案:

答案 0 :(得分:1)

是的,只需通过并保存!

import requests, pprint
resp = requests.get("http://openi.nlm.nih.gov/retrieve.php",
       params = {"query":"Feulgen", "m": 1, "n": 12})
for i in resp.json()['list']:
    #pprint.pprint(i)
    pprint.pprint(i['imgLarge'])
    img = requests.get('http://openi.nlm.nih.gov/'+i['imgLarge'])
    if img.status_code == 200:
        with open("/tmp/"+img.url.split("/")[-1], 'wb') as f:
            f.write(img.content)