Je voudrais gratter des données d'horaire de cette API . Les données renvoyées sont au format JSON. J'utilise Python.
J'ai essayé le code suivant: p> mais obtenir une erreur p> Qu'est-ce que je fais mal? P> p>
3 Réponses :
Vous avez mal orthographié Strdataarri pour un.
En outre, la bibliothèque de demandes pourrait rendre cela beaucoup plus propre à la recherche. p> sortie: p> [{'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'}]
Il est préférable d'utiliser la bibliothèque CODE> Demandes CODE> Si vous utilisez Python 3.x. Voici comment vous pouvez obtenir une réponse 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']
})
Les demandes disposent d'un analyseur JSON intégré et votre code conduira toujours à une erreur.
J'ai couru mon code avant de poster et cela fonctionne sans erreur. Pouvez-vous me dire quelle erreur vous avez?
Demandes Code> est la meilleure bibliothèque si vous utilisez Python 2.x aussi. Non pas que vous deviez utiliser Python 2.x pour de nouveaux projets plus longtemps.
Je pensais que vous aviez manqué l'orthographe dataarri à partir du commentaire original.
Votre erreur tente de décoder un seul caractère à partir de la réponse:
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']
})
Tout comme une note, vous ne "grattez" rien, c'est comment une API JSON est censée être utilisée.
Pourquoi indexez-vous la chaîne JSON?
SNAV_TIMETABLE [LEN (SNAV_TIMETABLE) -2] code> n'est pas un document JSON valide, c'est un seul caractère du document. Je viens de décoder la chaîne entière i>.