Ich muss die Daten herunterladen, die über eine URL verfügbar sind:
http://www.arpalazio.net/main/aria/sci/basedati/chimici/BDchimici/RM/MedieGiornaliere/RM_PM2.5_ 2019 _gg.txt
Um die Daten für verschiedene Jahre herunterzuladen, muss ich das Jahr in der URL ändern, wie in gezeigt rot . Ich möchte in JSL eine Schleife schreiben, die die Jahre von 1990 bis 2021 durchläuft und die Daten in eine Tabelle packen. Ich bin neu bei JSL, daher ist jede Hilfe zu diesem Zweck sehr willkommen.
Dafür brauchen Sie ein paar Dinge: Schleife (for-loop), Möglichkeit zum Erstellen der URL (eval insert), Möglichkeit zum Laden von Daten aus der URL (Öffnen mit korrekten Argumenten) und Methode zum Kombinieren der Daten (Verketten).
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 sollte in der Lage sein, fehlende Spalten zu behandeln, indem fehlende Werte erstellt werden, und Try ist eine ziemlich einfache Möglichkeit, URLs zu behandeln, die nicht existieren (ein bisschen faul).
Danke vielmals @jthi .Das ist sehr hilfreich.
Ich habe eine Anschlussfrage und wollte fragen, ob Sie mir dabei helfen können. Es gibt eine andere Datenbank, aus der ich die Daten mit fast der gleichen Methode herunterladen muss (dh den Jahreswert in der URL ändern). Hier ist die 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
Der einzige Unterschied besteht darin, dass ich auf dieser Seite auf die Schaltfläche "Daten abrufen" klicken muss, um die Daten von dieser URL zu erhalten. Gibt es eine Möglichkeit, dies über JSL zu tun?
Meines Wissens können Sie mit JMP nicht auf Elemente in Websites klicken, aber Sie können möglicherweise HTTP-Anforderungen verwenden, um die Daten abzurufen. Dazu müssten Sie herausfinden, wie die Anfragen durchgeführt werden (Entwicklertools des Browsers können dabei hilfreich sein).
Aha! gut zu wissen, vielen dank.
Sina