Comment tracer des données dans une page Web à partir d'un ensemble de données gratuit qui se met à jour quotidiennement?

Aug 17 2020

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

4 flinty Aug 16 2020 at 23:18

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 $offsetet $limiten 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.