Comment tracer des données dans une page Web à partir d'un ensemble de données gratuit qui se met à jour quotidiennement?
J'utilise les données disponibles dans les liens ci-dessous pour obtenir des données sur les cas confirmés de COVID-19 en Colombie. Je modélise les cas cumulatifs avec un modèle non linéaire et tout va bien. Cela a été fait en téléchargeant les données pour travailler localement. Je sais qu'il existe des mécanismes de développement Web et beaucoup de ce dont j'ai besoin, j'ai trouvé dans cette communauté, sauf que je ne sais pas comment mettre à jour automatiquement les graphiques à partir des données trouvées dans les liens d'une page Web.
https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr/data
https://www.datos.gov.co/w/gt2j-8ykr/dneh-mcp2?cur=i2Z4n-Qy94T&from=root
Merci pour vos suggestions!
Réponses
Il semble utiliser Socrata pour gérer les données. Je n'ai aucune expérience avec cette API, mais il semble que vous puissiez y accéder en utilisant cette forme d'URL:
https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr
Selon la documentation Socrata , vous pouvez demander ces données à un endroit particulier $offset
et $limit
en les fournissant en tant que paramètres dans l'URL. C'est un peu une niche, et au-delà de la portée de Mathematica Stack Exchange, mais nous espérons que cela vous permettra de démarrer:
(* fetch 10 records starting from offset 0 *)
request =
HTTPRequest["https://www.datos.gov.co/resource/gt2j-8ykr.json",
<| Method -> "GET", "Query" -> {"$limit" -> 10, "$offset" -> 0},
CharacterEncoding -> "UTF8"|>];
response = URLExecute[request];
Nous pouvons ensuite interroger les propriétés de la réponse JSON en formant un Association
:
(* of our 10 records, get the first 5 cities of location *)
Association[#]["ciudad_de_ubicaci_n"] & /@ response[[1 ;; 5]]
(* {"Bogotá D.C.", "Guadalajara de Buga", "Medellín", "Medellín", "Medellín"} *)
Si vous voulez le nombre total d'entrées dans la base de données (cas), je pense que vous pouvez utiliser l'API comme ceci $select=count(id_de_caso)
:
request =
HTTPRequest["https://www.datos.gov.co/resource/gt2j-8ykr.json",
<| Method -> "GET",
"Query" -> {"$select" -> "count(id_de_caso)", "$offset" -> 0},
CharacterEncoding -> "UTF8"|>];
response = URLExecute[request];
numberOfCases = ToExpression@Values[First[response]][[1]]
(* 456689 *)
Cela correspond exactement aux données de Columbia à https://www.trackcorona.live/map au 16 août 2020.