引发ImgurClientError(' JSON解码响应失败。')imgurpython.helpers.error.ImgurClientError:JSON解码响应失败

时间:2016-10-18 03:31:53

标签: python json api exception imgur

对于以下代码:

 12 imgur_client = ImgurClient(client_id, client_secret, access_token, refresh_token)
 13 for p in range(100, 500):
 14     search = imgur_client.gallery_search('cat', window='all', sort='time', page=p)
 15     for i in range(0, len(search)):
 16         #print(search[i].link)
 17         #print(dir(search[i]))
 18         print(search[i].type)
 19         if search[i].comment_count > 30 and search[i].type!='gif':
 20             count = 0
 21             image_file = urllib2.urlopen(search[i].link, timeout = 5)
 22             image_file_name = 'images/'+ search[i].id+search[i].type
 23             output_image = open(image_file_name, 'wb')
 24             output_image.write(image_file.read())
 25 
 26             for post in imgur_client.gallery_item_comments(search[i].id, sort='best'):
 27                 if count <= 30:
 28                     count += 1
 29 

我明白了:

$ python download.py 
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
Traceback (most recent call last):
  File "download.py", line 14, in <module>
    search = imgur_client.gallery_search('cat', window='all', sort='time', page=p)
  File "/usr/local/lib/python2.7/dist-packages/imgurpython/client.py", line 531, in gallery_search
    response = self.make_request('GET', 'gallery/search/%s/%s/%s' % (sort, window, page), data)
  File "/usr/local/lib/python2.7/dist-packages/imgurpython/client.py", line 158, in make_request
    raise ImgurClientError('JSON decoding of response failed.')
imgurpython.helpers.error.ImgurClientError: JSON decoding of response failed.

你能建议修复吗?

1 个答案:

答案 0 :(得分:0)

也许不是最好的解决方案,但这解决了问题:

  1 from imgurpython import ImgurClient
  2 import inspect
  3 import random
  4 import urllib2
  5 import requests
  6 from imgurpython.helpers.error import ImgurClientError

 15 imgur_client = ImgurClient(client_id, client_secret, access_token, refresh_token)
 16 
 17 for p in range(100, 500):
 18     try:
 19         search = imgur_client.gallery_search('cat', window='all', sort='time', page=p)
 20         for i in range(0, len(search)):
 21             if search[i].comment_count > 30 and not search[i].is_album:
 22                 print(search[i].type)
 23                 if 'jpg' in search[i].type :
 24                     count = 0
 25                     image_file = urllib2.urlopen(search[i].link, timeout = 5)
 26                     image_file_name = 'images/'+ search[i].id+'.'+search[i].type[6:]
 27                     output_image = open(image_file_name, 'wb')
 28                     output_image.write(image_file.read())
 29                     for post in imgur_client.gallery_item_comments(search[i].id, sort='best'):
 30                         if count <= 30:
 31                             count += 1
 32     except ImgurClientError as e:
 33         print(e)
 34         continue