Python IndexError: list index out of range при обработке JSON

Рейтинг: 2Ответов: 1Опубликовано: 08.12.2014

Делаю, вроде бы, элементарную вещь:

import requests
import json

full_url = 'example.com'
i = 0

r = requests.get(full_url, verify=False)
data = r.json()

while ( i < int(data["TotalRecords"])) :
        print data["Data"][i]["id"]
        i += 1

exit (0)

В результате "IndexError: list index out of range".

Цикл дохнет при достижении i значения 100.
Всего выгружается порядка 3000 элементов.

Обновление

На небольших данных всё ОК.
Кусок json'a:

{map': {}, Data': [
{p2': 22, pr': 6, p1': 51373, no': snort', index': sessions-141208', db': 286864, id': 141208-UAs05h4pNJJDep-jtXy6f9rp', a1': 167773389, pa': 3532, fp': 1418025877, lp': 1418027319, ro': 141208-UAuzrBogdHBHQ59kpsVMuYNr', by': 871656, a2': 168427595}, 
{p2': 22, pr': 6, p1': 51373, no': snort', index': sessions-141208', db': 335312, id': 141208-UAsUDoftJ-5CVIqfH1t5rmaN', a1': 167773389, pa': 6216, fp': 1418025877, lp': 1418028038, ro': 141208-UAuzrBogdHBHQ59kpsVMuYNr', by': 3211128, a2': 168427595}

Ответы

▲ 3Принят

упс, был неправ.

Скорее всего дело в том, что на сервере используется разбивание на страницы. Просто на страницу выводится максимум сто элементов, независимо от того, сколько их на самом деле.

Неплохо бы пользоваться правильным питоновским путём, for:

for element in data["Data"]:
    print element["id"]

Читай документацию.