Как добавить несколько словарей во время циклического разбивки на страницы (API) - python 3 - PullRequest
0 голосов
/ 11 октября 2018

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

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

Но мой словарь содержит только последнюю страницу!

page = 5
i = 0
for i in range(0, page):
    url =f'http://hotell.difi.no/api/json/npd/wellbore/withcoordinates?page={i+1}'

    dataset_all = requests.get(url)
    json_dataset_all = dataset_all.json()
    json_dataset_all.update()
    print(json_dataset_all)
    i = i+1

Мне не удается пройти цикл и обновить словарь page1 на page2, page3, page4 и page5.

«Печать» показывает, что цикл по страницам работает, но он не сохраняет страницы в словаре по мере продвижения.Он содержит только последнюю страницу.

Заранее благодарен за помощь.

1 Ответ

0 голосов
/ 12 октября 2018

Страницы имеют идентичный «ключ», называемый «записи», и его значение представляет собой список словарей.Когда вы обновите свой словарь, он просто перезапишет свое значение (список словарей).

Если вы хотите иметь один единый список со всеми словарями, вы можете сделать что-то вроде этого.Затем вы также можете легко поместить его в Pandas DataFrame.

import requests
import pandas as pd

page = 5
i = 0
all_data_list = []
for i in range(0, page):
    url =f'http://hotell.difi.no/api/json/npd/wellbore/with-coordinates?page={i+1}'

    dataset_all = requests.get(url)
    dataset_all_json = dataset_all.json()
    number_of_entries = len(dataset_all_json['entries'])

    for x in range(0, number_of_entries):
        all_data_list.append(dataset_all_json['entries'][x])

    i = i+1

# Put all the results in a Pandas DataFrame
df = pd.DataFrame(all_data_list)
print(df)

(кстати, ваш URL пропускает '-' в "withcoordinates")

...