วิธีการลงจุดข้อมูลในหน้าเว็บจากชุดข้อมูลฟรีซึ่งอัปเดตทุกวัน

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 *)

สิ่งนี้ตรงกับข้อมูลของ Columbia at https://www.trackcorona.live/map ณ วันที่ 16 สิงหาคม 2563