Очистка веб-данных из JSON с помощью Python

  • Перейти к: Решение -> Пакет
  • Нажмите вкладку «Дополнительно» (найдите ниже страницы)
  • Добавьте вашу dll в дополнительные сборки (таким образом мы можем добавить внешние DLL в sharepoint).
-2
задан Martijn Pieters 26 February 2019 в 21:40
поделиться

3 ответа

Лучше использовать библиотеку requests, если вы используете Python 3.x. Вот как вы можете получить ответ JSON.

import requests

snav_timetable_url = "https://booking.snav.it/api/v1/rates/1040/2019-02-25/1042/2019-02-25?lang=1"
fh = requests.get(snav_timetable_url)
json_data = fh.json()

Таким образом, у вас не будет никаких ошибок и вы сможете продолжить анализ.

for departure in json_data ['data']['ratesOutward']:
   snav_timetable_data_cleaned.append({
      'COMPANY': 'Snav',
      'CODICE CORSA': departure['coditinera'],
      'DEPARTURE DATE TIME': departure['strDatapart'],
      'ARRIVAL DATE TIME': departure['strDataarri']
   })
0
ответ дан Amirhos Imani 26 February 2019 в 21:40
поделиться

Ваша ошибка в попытке декодировать один символ из ответа:

>>> snav_timetable[len(snav_timetable)-2]
'}'

Один символ не является документом JSON, поэтому по праву не удается выполнить синтаксический анализ. Вы хотите декодировать весь ответ :

snav_timetable_data = json.loads(snav_timetable)

Вы можете перейти к использованию библиотеки requests , вместо этого здесь происходит загрузка Ответы JSON из тривиального API:

import requests

snav_timetable_data = requests.get(snav_timetable_url).json()

snav_timetable_data_cleaned = []
for departure in snav_timetable_data['data']['ratesOutward']:
    snav_timetable_data_cleaned.append({
       'COMPANY': 'Snav',
       'CODICE CORSA': departure['coditinera'],
       'DEPARTURE DATE TIME': departure['strDatapart'],
       'ARRIVAL DATE TIME': departure['strDataarri']
    })

Обратите внимание, что мне пришлось исправить опечатку в эталоне времени прибытия; это strDataarri, а не strDatarri.

0
ответ дан Martijn Pieters 26 February 2019 в 21:40
поделиться

Вы неправильно написали strDataarri для одного.

Кроме того, библиотека запросов может сделать это намного более чистым.

import requests
snav_timetable_url = "https://booking.snav.it/api/v1/rates/1040/2019-02-25/1042/2019-02-25?lang=1"
r = requests.get(snav_timetable_url).json()

snav_timetable_data_cleaned = []
for departure in r['data']['ratesOutward']:
    snav_timetable_data_cleaned.append({
       'COMPANY': 'Snav',
       'CODICE CORSA': departure['coditinera'],
       'DEPARTURE DATE TIME': departure['strDatapart'],
       'ARRIVAL DATE TIME': departure['strDataarri']
    })

Выход:

[{'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-25 08:25',
  'ARRIVAL DATE TIME': '2019-02-25 09:20'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-25 12:30',
  'ARRIVAL DATE TIME': '2019-02-25 13:25'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-25 16:20',
  'ARRIVAL DATE TIME': '2019-02-25 17:15'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-25 19:00',
  'ARRIVAL DATE TIME': '2019-02-25 19:55'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-26 08:25',
  'ARRIVAL DATE TIME': '2019-02-26 09:20'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-26 12:30',
  'ARRIVAL DATE TIME': '2019-02-26 13:25'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-26 16:20',
  'ARRIVAL DATE TIME': '2019-02-26 17:15'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-26 19:00',
  'ARRIVAL DATE TIME': '2019-02-26 19:55'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-27 08:25',
  'ARRIVAL DATE TIME': '2019-02-27 09:20'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-27 12:30',
  'ARRIVAL DATE TIME': '2019-02-27 13:25'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-27 16:20',
  'ARRIVAL DATE TIME': '2019-02-27 17:15'},
 {'COMPANY': 'Snav',
  'CODICE CORSA': 'NABECASA',
  'DEPARTURE DATE TIME': '2019-02-27 19:00',
  'ARRIVAL DATE TIME': '2019-02-27 19:55'}]
0
ответ дан Chris 26 February 2019 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: