Devo scaricare i dati disponibili tramite un URL:
http://www.arpalazio.net/main/aria/sci/basedati/chimici/BDchimici/RM/MedieGiornaliere/RM_PM2.5_ 2019 _gg.txt
Per scaricare i dati per anni diversi, devo cambiare l'anno nell'URL, come mostrato in rosso . Vorrei scrivere un ciclo in JSL che attraversi gli anni dal 1990 al 2021 e inserire i dati in una tabella. Sono nuovo di JSL, quindi qualsiasi aiuto in tal senso è molto apprezzato.
Hai bisogno di un paio di cose per questo: Loop (for-loop), modo per costruire l'URL (inserimento eval), modo per caricare i dati dall'URL (Apri con argomenti corretti) e modo per combinare i dati (concatenare).
Names Default To Here(1);
//We can use Eval Insert to replace ^temp_year^ in the string
dl_url = "http://www.arpalazio.net/main/aria/sci/basedati/chimici/BDchimici/RM/MedieGiornaliere/RM_PM2.5_^temp_year^_gg.txt";
dt = New Table(); //table to collect results
//for-loop
For(i = 1990, i <= 2021, i++,
temp_year= Char(i);
year_url = Eval Insert(dl_url);
//downloaded first one file by hand -> opened in JMP to get Open with correct parameters and replaced file path with URL
Try(
dt_temp = Open(
year_url,
Import Settings(
End Of Line(CRLF, CR, LF),
End Of Field(Spaces, Space, CSV(0)),
Strip Quotes(1),
Use Apostrophe as Quotation Mark(0),
Use Regional Settings(0),
Scan Whole File(1),
Treat empty columns as numeric(0),
CompressNumericColumns(0),
CompressCharacterColumns(0),
CompressAllowListCheck(0),
Labels(1),
Column Names Start(1),
Data Starts(2),
Lines To Read("All"),
Year Rule("20xx")
)
);
dt << Concatenate(dt_temp, Append to first table(1));
Close(dt_temp, no save);
,
Show(exception_msg)
);
);
Concatenate dovrebbe essere in grado di gestire le colonne mancanti creando valori mancanti e Try è un modo abbastanza semplice per gestire gli URL che non esistono (un po' pigro).
Molte grazie @jthi .Questo è molto utile.
Ho una domanda di follow-up e mi chiedevo se potessi aiutarmi con quello. C'è un altro database da cui ho bisogno di scaricare i dati con quasi lo stesso metodo (cioè, cambiando il valore dell'anno nell'URL). Ecco l'url:
https://www.arb.ca.gov/aqmis2/pickdl_hrly.php?param=OZONE&units=007&year=2021&county_name=--COUNTY--&basin=SC-South+Coast&latitude=--PART+OF+STATE--&report= PICKDATA&order=basin%2Ccounty_name%2Cs.name&submit=Recupera+Dati&ptype=aqd&std15=&o3switch=new&hours=all&statistic=&qselect=Schermato&start_mon=1&start_day=1&mon=12&day=31&submit=All+Sites&rows=29
L'unica differenza è che per ottenere i dati da questo URL, devo fare clic sul pulsante "Ottieni dati" in quella pagina. C'è un modo per farlo tramite JSL?
Per quanto ne so, non puoi fare clic sugli elementi nei siti Web con JMP, ma potresti essere in grado di utilizzare le richieste HTTP per ottenere i dati. Per questo dovresti capire come vengono fatte le richieste (gli strumenti di sviluppo del browser possono essere utili con questo).
Vedo! buono a sapersi, grazie mille.
Sina