Чтение данных из 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 
  • Игнорировать исключения, напечатанные в stderr в __del __ ()
  • Правильная капитализация для заголовков в Python
  • PyDrive: невозможно записать файл в определенную папку GDrive
  • Что делает оператор <> в python?
  • Каков самый чистый способ добавить каталог сторонних пакетов в начало пути Python?
  • Как выполнить итерацию строки в Python?
  • SyntaxError: «не может назначить вызов функции»
  • Одно слово Palindrome Checker (True или False)
  •  
    Interesting Posts for Van-Lav

    cProfile сохранение данных в файл вызывает перебои символов

    Выполнение асинхронной задачи в Flask

    Python3 argparse set_defaults не принимает строку как имя параметра?

    Как начать и остановить поток?

    Используя pandas в Python, как я могу сделать гистограмму одного блока данных, используя ячейки из другого фрейма данных?

    Что эквивалентно команде collection.getIndexes () shell в pymongo?

    Letsencrypt ImportError: без интерфейса имени модуля на amazon linux при обновлении

    Является ли Python2.6 достаточно стабильным для использования в производстве?

    Python AES Decryption Routine (Справка по коду)

    Могу ли я импортировать форматированные строковые литералы Python 3.6 (f-строки)

    Самая длинная строка в алфавитном порядке

    Как получить доступ к взвешиванию отдельных деревьев решений в xgboost?

    Почему create () в пакетных платежах PayPal через API возвращает False?

    Рисование многоугольника в PyQt

    Соглашение об именах переменных Python

    Python - лучший язык программирования в мире.