Je dois télécharger les données disponibles via une URL :
http://www.arpalazio.net/main/aria/sci/basedati/chimici/BDchimici/RM/MedieGiornaliere/RM_PM2.5_ 2019 _gg.txt
Pour télécharger les données pour différentes années, je dois changer l'année dans l'url, comme indiqué dans rouge . Je voudrais écrire une boucle en JSL qui traverse les années 1990 à 2021 et mettre les données dans un tableau. Je suis nouveau sur JSL, donc toute aide à cette fin est grandement appréciée.
Vous avez besoin de quelques éléments pour cela : une boucle (for-loop), un moyen de créer l'url (insertion eval), un moyen de charger les données à partir de l'url (Ouvrir avec des arguments corrects) et un moyen de combiner les données (concaténer).
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)
);
);
Concaténer devrait être capable de gérer les colonnes manquantes en créant des valeurs manquantes et Try est un moyen assez simple de gérer les URL qui n'existent pas (un peu paresseux cependant).
Merci beaucoup @jthi .C'est très utile.
J'ai une question complémentaire et je me demandais si vous pouviez m'aider. Il existe une autre base de données à partir de laquelle je dois télécharger les données avec presque la même méthode (c'est-à-dire en modifiant la valeur de l'année dans l'URL). Voici 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=Retrieve+Data&ptype=aqd&std15=&o3switch=new&hours=all&statistic=&qselect=Screened&start_mon=1&start_day=1&mon=12&day=31&submit=All+Sites&rows=29
La seule différence est que pour obtenir les données de cette URL, je dois cliquer sur le bouton "Obtenir les données" sur cette page. Existe-t-il un moyen de le faire via JSL?
À ma connaissance, vous ne pouvez pas cliquer sur des éléments de sites Web avec JMP, mais vous pouvez peut-être utiliser des requêtes HTTP pour obtenir les données. Pour cela, vous devrez déterminer comment les demandes sont effectuées (les outils de développement du navigateur peuvent être utiles pour cela).
Je vois! bon à savoir, merci beaucoup.
Sina