Чтение данных из api и заполнение ошибки .csv

Я пытаюсь написать сценарий (Python 2.7.11, Windows 10) для сбора данных из API и добавления его в файл csv.

API, который я хочу использовать, возвращает данные в json. Это ограничивает количество отображаемых записей, а также их страниц. Таким образом, существует максимальное количество записей, которые вы можете получить с помощью одного запроса, а затем вам нужно запустить другой запрос, изменив номер страницы.

API информирует вас о количестве страниц, на которые делится набор данных. Предположим, что максимальное количество записей на странице равно 100, а количество страниц – 2.

Мой скрипт:

import json import urllib2 import csv url = "https://some_api_address?page=" limit = "&limit=100" myfile = open('C:\Python27\myscripts\somefile.csv', 'ab') def api_iterate(): for i in xrange(1, 2, 1): parse_url = url,(i),limit json_page = urllib2.urlopen(parse_url) data = json.load(json_page) for item in data['someobject']: print item ['some_item1'], ['some_item2'], ['some_item3'] f = csv.writer(myfile) for row in data: f.writerow([str(row)]) 

Это не работает, т. Е. Создает файл csv, но файл не заполняется. Очевидно, что что-то не так с той частью скрипта, которая строит адрес для запроса, либо частью, связанной с чтением json ИЛИ частью, связанной с написанием запроса на csv. Или все они.

Я попытался использовать другие ресурсы и учебные пособия, но в какой-то момент я застрял, и я был бы признателен за вашу помощь.

One Solution collect form web for “Чтение данных из api и заполнение ошибки .csv”

Указанный вами URL предоставляет ссылку на следующую страницу как один из объектов. Вы можете использовать это для автоматической итерации по всем страницам.

Скрипт ниже получает каждую страницу, извлекает две записи из массива Dataobject и записывает их в файл output.csv :

 import json import urllib2 import csv def api_iterate(myfile): url = "https://api-v3.mojepanstwo.pl/dane/krs_osoby" csv_myfile = csv.writer(myfile) cols = ['id', 'url'] csv_myfile.writerow(cols) # Write a header while True: print url json_page = urllib2.urlopen(url) data = json.load(json_page) json_page.close() for data_object in data['Dataobject']: csv_myfile.writerow([data_object[col] for col in cols]) try: url = data['Links']['next'] # Get the next url except KeyError as e: break with open(r'e:\python temp\output.csv', 'wb') as myfile: api_iterate(myfile) 

Это даст вам выходной файл, который выглядит примерно так:

 id,url 1347854,https://api-v3.mojepanstwo.pl/dane/krs_osoby/1347854 1296239,https://api-v3.mojepanstwo.pl/dane/krs_osoby/1296239 705217,https://api-v3.mojepanstwo.pl/dane/krs_osoby/705217 802970,https://api-v3.mojepanstwo.pl/dane/krs_osoby/802970 
  • Константы класса в python
  • ссылка перед ошибкой присваивания в python
  • python csv reader - преобразовать строку в int в строке for при итерации
  • Как назначить значение переменной с помощью eval в python?
  • Не работает кеш Google App Engine Edge Cache
  • расширенный евклидовой алгоритм и понятие мультипликативного обратного
  • Как преобразовать строки в файл в строки, проходящие до конца строки?
  • Можно ли генерировать и возвращать ZIP-файл с помощью App Engine?
  • Проверьте, есть ли что-то «ожидание» возвращаемого значения функции
  • Как вы определяете, находится ли слово в алфавитном порядке в python?
  • Заполнить программу
  • Python - лучший язык программирования в мире.