Как отобразить данные на веб-странице из бесплатного набора данных, который обновляется ежедневно?

Aug 17 2020

Я использую данные, доступные по ссылкам ниже, чтобы получить данные о подтвержденных случаях COVID-19 в Колумбии. Я моделирую кумулятивные случаи с помощью нелинейной модели, и все в порядке. Это было сделано путем загрузки данных для работы локально. Я знаю, что существуют механизмы для веб-разработки и многое, что мне нужно, я нашел в этом сообществе, за исключением того, что я не знаю, как автоматически обновлять графику на основе данных, найденных в ссылках на веб-странице.

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

Спасибо за ваши предложения!

Ответы

4 flinty Aug 16 2020 at 23:18

Похоже, что для управления данными он использует Socrata . У меня нет опыта работы с этим API, но, похоже, вы можете получить к нему доступ, используя следующую форму URL:

https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr

Согласно документации Socrata , вы можете запросить эти данные на конкретный $offsetи $limitпредоставляя их в качестве параметров в URL. Это небольшая ниша и выходит за рамки Mathematica Stack Exchange, но, надеюсь, это поможет вам начать:

(* 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];

Затем мы можем запросить свойства ответа JSON, сформировав 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"} *)

Если вам нужно общее количество записей в базе данных (случаев), я считаю, что вы можете использовать API следующим образом $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 *)

Это точно совпадает с данными по Колумбии на https://www.trackcorona.live/map по состоянию на 16 августа 2020 г.