Using perl Syntax Highlighting
#!/usr/bin/perl
use LWP::Simple;
my $URL= 'http://weather.uwyo.edu/cgi-bin/sounding?region=samer&TYPE=TEXT%3ALIST&YEAR=2008';
my $url = '&STNM=85442';
my $GRD2RAD = (3.141592654 / 180);
my $convertir = 0.514444;
for my $mes ( "12" ) {
for my $dia ( "01" .. "31" ) {
for my $hora ( 12 ) {
my $fecha = "$dia-$mes-$hora";
my $fichero = "$fecha.dat";
my $pagina = get("$URL&MONTH=$mes&FROM=$dia$hora&TO=$dia$hora$url");
if (defined $pagina) {
if ((my $datos) = $pagina =~ m/^<PRE>(.+?)<\/PRE>/sim) {
open (FICHERO, ">$fichero");
for my $linea (split "\n", $datos) {
next if $linea !~ /^\s*\d/; # Nos quedamos solo con los datos de la tabla
my $pres = substr($linea, 1, 6); # Algunas variables que entrega el radiosonda.
my $hght = substr($linea, 8, 14);
my $drct = substr($linea, 43, 6);
my $sknt = substr($linea, 50, 6);
my $gar = $GRD2RAD * $drct; #cambio la direccion del viento que esta en grados a radianes.
my $nam = $convertir * $sknt; # cambio la velocidad del viento qe esta en nudos a [m/s].
my $u = (-1) * $nam * sin $gar; #componente u del viento.
my $v = (-1) * $nam * cos $gar; #componente v del viento.
printf FICHERO "%6.0f %6.1f %6.2f %6.2f\n" , $pres, $temp, $u, $v;
}
close (FICHERO);
}}}}}
use LWP::Simple;
my $URL= 'http://weather.uwyo.edu/cgi-bin/sounding?region=samer&TYPE=TEXT%3ALIST&YEAR=2008';
my $url = '&STNM=85442';
my $GRD2RAD = (3.141592654 / 180);
my $convertir = 0.514444;
for my $mes ( "12" ) {
for my $dia ( "01" .. "31" ) {
for my $hora ( 12 ) {
my $fecha = "$dia-$mes-$hora";
my $fichero = "$fecha.dat";
my $pagina = get("$URL&MONTH=$mes&FROM=$dia$hora&TO=$dia$hora$url");
if (defined $pagina) {
if ((my $datos) = $pagina =~ m/^<PRE>(.+?)<\/PRE>/sim) {
open (FICHERO, ">$fichero");
for my $linea (split "\n", $datos) {
next if $linea !~ /^\s*\d/; # Nos quedamos solo con los datos de la tabla
my $pres = substr($linea, 1, 6); # Algunas variables que entrega el radiosonda.
my $hght = substr($linea, 8, 14);
my $drct = substr($linea, 43, 6);
my $sknt = substr($linea, 50, 6);
my $gar = $GRD2RAD * $drct; #cambio la direccion del viento que esta en grados a radianes.
my $nam = $convertir * $sknt; # cambio la velocidad del viento qe esta en nudos a [m/s].
my $u = (-1) * $nam * sin $gar; #componente u del viento.
my $v = (-1) * $nam * cos $gar; #componente v del viento.
printf FICHERO "%6.0f %6.1f %6.2f %6.2f\n" , $pres, $temp, $u, $v;
}
close (FICHERO);
}}}}}
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
Me descarga este tipo de datos:
- Código: Seleccionar todo
1000 16.8 0.88 2.42
993 16.5 2.95 4.21
933 13.4 -1.53 1.38
925 15.4 -1.34 0.77
920 16.8 -1.36 0.72
910 17.2 -1.40 0.65
897 17.6 -1.44 0.55
858 16.0 -1.53 0.21
850 16.6 -1.54 0.13
804 16.8 -1.03 1.15
776 14.8 -0.25 1.00
761 15.8 0.02 1.03
738 14.3 0.43 0.93
707 12.2 0.32 2.03
700 12.8 0.22 2.56
697 13.2 0.09 2.57
660 10.6 -2.80 4.31
658 10.5 -2.95 4.21
636 9.0 -2.72 6.11
600 4.7 -0.85 9.74
532 -4.1 -2.80 1.30
526 -3.3 -2.43 0.84
524 -3.5 -2.46 0.75
506 -4.8 -0.51 0.00
501 -5.1 -0.51 0.04
500 -5.3 -0.51 0.04
490 -6.7 -1.03 0.00
458 -11.3 1.07 -3.98
453 -12.1 1.00 -3.99
400 -16.3 0.13 -1.54
397 -16.6 1.65 -1.97
396 -16.7 1.65 -1.97
390 -16.5 2.31 -2.76
375 -18.8 3.31 -3.94
350 -22.7 4.73 -4.73
349 -22.9 4.81 -4.65
336 -23.7 6.98 -5.26
308 -28.8 13.05 -4.75
300 -30.3 13.99 -6.52
268 -37.5 11.43 -9.59
257 -40.1 14.07 -9.49
250 -41.3 15.59 -9.00
245 -42.6 16.78 -7.83
234 -45.7 16.04 -8.17
227 -46.9 15.75 -8.73
208 -52.7 14.67 -9.53
201 -54.1 13.91 -9.74
200 -54.3 13.91 -9.74
189 -57.4 13.10 -13.10
188 -57.7 13.92 -12.98
184 -57.7 16.23 -11.79
178 -59.0 20.05 -9.35
176 -59.5 19.42 -8.24
173 -60.2 18.85 -6.86
153 -65.5 12.15 -6.73
150 -66.5 11.14 -6.43
149 -66.8 10.69 -6.17
146 -67.7 9.32 -4.35
135 -71.0 10.25 -0.90
133 -71.7 9.70 1.19
131 -71.9 8.22 2.99
126 -72.5 6.66 -0.58
120 -73.3 6.24 3.60
117 -72.0 0.76 8.71
116 -71.5 -0.31 8.74
112 -72.8 -4.37 7.57
112 -72.8 -4.37 7.57
105 -75.3 -6.66 -0.58
101 -76.7 -3.55 -0.63
100 -77.1 -2.80 1.30
93 -79.3 -0.80 2.98
90 -78.5 0.58 6.66
88 -77.9 -3.70 7.93
83 -76.5 -9.46 7.94
81 -75.9 -12.58 2.67
80 -76.2 -13.32 -1.17
79 -76.4 -12.42 -3.33
78 -76.6 -11.60 -4.22
75 -77.4 -10.13 1.79
70 -78.7 -4.46 -2.57
67 -80.2 -2.05 0.18
67 -80.3 -3.38 1.23
66 -79.8 -3.84 5.48
64 -78.2 -7.61 9.06
60 -75.1 -7.94 9.46
57 -72.5 -13.91 3.73
55 -70.7 -13.81 7.97
52 -68.0 -18.24 3.22
51 -67.1 -17.32 2.43
50 -68.5 -15.89 1.39
49 -69.1 -15.42 -0.54
47 -68.1 -14.69 -2.59
43 -65.4 -15.40 4.13
39 -62.5 -13.89 0.00
38 -61.7 -11.93 3.20
37 -60.9 -12.57 4.57
34 -58.4 -16.98 0.00
33 -57.5 -21.28 3.75
33 -57.1 -20.93 2.57
31 -58.3 -19.47 -1.70
31 -58.5 -18.99 -1.33
30 -57.5 -18.52 0.00
29 -56.7 -20.50 1.79
25 -53.3 -26.34 -4.65
23 -51.7 -22.46 -5.60
23 0.0 -21.86 -5.86
Como se han dado cuenta es muy muy largo y no todos los datos me sirven.
Lo que necesito es que de la primera columna se descarguen este datos: 1000, 925, 850, 700, 500, 400, 350, 300, 250, 200, 150, 100, con su respectiva fila.
He hecho algunos cambios en el script del principio, pero no logro obtener lo que quiero.
Les agradezco mucho su ayuda.