Last active
June 4, 2020 19:43
-
-
Save brizandrew/e931df1b53816d30bc1209c03af872ae to your computer and use it in GitHub Desktop.
Texas Department of Criminal Justice COVID-19 Case Counts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Go to | |
// https://txdps.maps.arcgis.com/apps/opsdashboard/index.html#/dce4d7da662945178ad5fbf3981fa35c | |
// Then copy and paste the code below into the console | |
// Step 1: Load SaveAs Function from File-Saver | |
function b(a,b){return "undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Deprecated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open("GET",b),e.responseType="blob",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error("could not download file")},e.send()}function d(a){var b=new XMLHttpRequest;return b.open("HEAD",a,!1),b.send(),200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=f.saveAs||("object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f){navigator.msSaveOrOpenBlob(b(f,h),g)}else if(d(f)){c(f,g,h)}else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open("","_blank"),e&&(e.document.title=e.document.body.innerText="downloading..."),"string"==typeof a){return c(a,b,d)}var g="application/octet-stream"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\/[\d]+/.test(navigator.userAgent);if((i||g&&h)&&"object"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,"undefined"!=typeof module&&(module.exports=a); | |
// Step 2: Reset your data | |
let data = [] | |
// Step 3: Do the scraping | |
units = Array.from(document.querySelectorAll('.list-item-content')) | |
units.forEach(u => { | |
const unitData = {} | |
unitData.unit = u.querySelector('p').innerText; | |
const rawData = u.querySelector('p:nth-child(2)').innerText.split('-').map(n => n.split('\n')).flat().map(n => n.trim()) | |
unitData[rawData[0]] = rawData[1]; | |
unitData[rawData[2]] = rawData[3]; | |
unitData[rawData[4]] = rawData[5]; | |
unitData[rawData[6]] = rawData[7]; | |
unitData[rawData[8]] = rawData[9]; | |
unitData[rawData[10]] = rawData[11]; | |
data.push(unitData); | |
}) | |
// Step 4: Convert to csv | |
const fields = Object.keys(data[0]) | |
const replacer = function(key, value) { return value === null ? '' : value } | |
let csv = data.map(function(row){ | |
return fields.map(function(fieldName){ | |
return JSON.stringify(row[fieldName], replacer) | |
}).join(',') | |
}) | |
csv.unshift(fields.join(',')) // add header column | |
csv = csv.join('\r\n'); | |
// Step 4: Save data variable | |
// data --> text --> blob --> file | |
text = csv; | |
blob = new Blob([text], { type: 'text/plain;charset=utf-8' }); | |
saveAs(blob, 'data.csv') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment