Я пытаюсь получить доступ к большому количеству данных морфометрии c нейронов (18200 нейронов, если быть точным), но у меня выходит ошибка строки. Вначале я хотел бы упомянуть, что я использовал этот код много раз для доступа к другим нейронам (4000 сразу было моим максимумом до этого), и он работал без единой проблемы.
n = [**neurons numbers should go here, but i'm limited with the number of characters**]
neuron_morphometry = []
for i in n:
url = "http://neuromorpho.org/api/morphometry/id/" + str(i)
response = requests.get(url)
json_data = response.json()
neuron_morphometry.append(json_data)
neuron_morphometry = []
print (neuron_morphometry)
Результат вот так:
IndexError Traceback (последний вызов последним) ~ \ Anaconda3 \ lib \ site-packages \ simplejson \ scanner.py в _scan_once (string, idx) 36 try: ---> 37 nextchar = string [idx] 38 за исключением IndexError:
IndexError: индекс строки вне диапазона
Во время обработки указанного выше исключения произошло другое исключение:
JSONDecodeError Traceback (большинство последний вызов последний) в 4 url = "http://neuromorpho.org/api/morphometry/id/" + str (i) 5 response = requests.get (url) ----> 6 json_data = response. json () 7 neuroon_morphometry.append (json_data) 8 #print (neuroon_morphometry)
~ \ Anaconda3 \ lib \ site-packages \ requests \ models.py in json (self, ** kwargs) 896 # used. 897 проход -> 898 вернуть комплекс json .loads (self.text, ** kwargs) 899 900 @ property
~ \ Anaconda3 \ lib \ site-packages \ simplejson_ init _.py в загрузках (s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, use_decimal, ** kw) 516 parse_constant is None и object_pairs_hook is None 517 и не use_decimal и не return kw): -> 5 _default_decoder.decode (s) 519, если cls равно None: 520 cls = JSONDecoder
~ \ Anaconda3 \ lib \ site-packages \ simplejson \ decoder.py в decode (self, s, _w, _PY3) 368, если _PY3 и isinstance (s, bytes): 369 s = str (s, self.encoding) -> 370 obj, end = self.raw_decode (s) 371 end = _w (s, end) .end () 372 if end ! = len (s):
~ \ Anaconda3 \ lib \ site-packages \ simplejson \ decoder.py в raw_decode (self, s, idx, _w, _PY3) 398 elif ord0 == 0xef and s [ idx: idx + 3] == '\ xef \ xbb \ xbf': 399 idx + = 3 -> 400 return self.scan_once (s, idx = _w (s, idx) .end ())
~ \ Anaconda3 \ lib \ site-packages \ simplejson \ scanner.py в sc an_once (string, idx) 77 raise JSONDecodeError ('Expecting value', string, idx) 78 try: ---> 79 return _scan_once (string, idx) 80 finally: 81 memo.clear ()
~ \ Anaconda3 \ lib \ site-packages \ simplejson \ scanner.py в _scan_once (string, idx) 37 nextchar = string [idx] 38, кроме IndexError: ---> 39 поднять JSONDecodeError (errmsg, string, idx) 40 41, если nextchar == '"':
JSONDecodeError: Ожидаемое значение: строка 1 столбец 1 (символ 0)
Я предполагаю, что некоторые данные для определенного количества нейронов отсутствуют или отсутствуют строка, поэтому я попытался пропустить те нейроны, которые не могут быть получены с помощью следующего кода:
for i in n:
url = "http://neuromorpho.org/api/morphometry/id/" + str(i)
response = requests.get(url)
try:
json_data = response.json()
except ValueError:
continue
neuron_morphometry.append(json_data)
Однако ошибка все равно осталась. Итак, я вошел вручную и попытался получить доступ к группам из примерно 1000 нейронов, чтобы попытаться определить, какие нейроны были проблемой. В конце концов я понял, что мои проблемы начинаются с нейрона с номером 124375 и доходят до 135689. Для всех чисел между этими двумя я получаю ту же ошибку. Например, если я возьму какой-то другой номер 6 di git (115015, который также есть в списке), все будет работать нормально. Также работают все числа 5,4 или 3 di git. Кто-нибудь знает, почему API ведет себя так?
Это ссылка на NeuronID, к которой я пытаюсь получить доступ.