[bcn-pm] RS: salutacions i consulta

Agud Pique, Enric eagud.q a tv3.cat
dij ago 22 02:03:09 PDT 2013


Hola Kenneth,
 
gràcies per l'enllaç, en tot cas, també, ja em va bé aprendre a fer consultes via perl,
 
Salutacions
 
Enric

________________________________

De: Barcelona-pm [mailto:barcelona-pm-bounces+eagud.q=tv3.cat a pm.org] En nom de kenneth a gnunetworks.com
Enviat: dijous, 22 de agost de 2013 10:45
Per a: barcelona-pm a pm.org
Tema: Re: [bcn-pm] RS: salutacions i consulta



Hola a tots,

 

No cal un script per a baixar-se les dades.

Son en CSV a http://aviationweather.gov/adds/data/

 

En concret: http://aviationweather.gov/adds/data/dataserver_current/

 

Només et cal filtrar les estacions que vols dins els CSVs :)

 

Salut!

Kenneth

On Wed, 21 Aug 2013 23:32:06 +0200, Marc Egea i Sala wrote:

	A mi el més simple que se m'acut és utilitzar LWP::Simple com i Text:CSV per fer el csv. Com diu en Xavi, aprofito que la web em deixa fer una petició get directament amb el codi que vull...
	Pot ser alguna cosa així (amb una regex ultrafàcil i sense passar paràmetres) :
	
	#!/usr/bin/env perl
	
	use strict;
	use v5.10;
	
	use LWP::Simple;
	use Text::CSV;
	
	my $output_file = 'data.csv';
	my @airports    = qw( LEBL LEGE );
	
	open my $fh, ">:encoding(utf8)", $output_file or die $!;
	my $csv = Text::CSV->new ( { binary => 1, sep_char => ';' } );
	
	for my $code ( @airports ) {
	    my $page = "http://aviationweather.gov/adds/metars/?station_ids=$code&std_trans=standard&chk_metars=on&hoursStr=most+recent+only&submitmet=Submit";
	    my $html = get( $page );
	    my @data = $html =~ />(.*)
	    $csv->print( $fh => [ split( ' ', $data[0] ) ] );
	    print $fh "\n"
	}
	
	close $fh;
	
	


	El dia 21 d'agost de 2013 23.04, Xavier Noria <fxn a hashref.com> ha escrit:
	

		Hola Enric, 
		En aquest problema podem simplificar una mica les coses observant com va el website. Per exemple, el formulari es nomes una manera de fer una peticio GET amb un cert query string, si fas un parell de proves veus com van els parametres i aixi t'estalvies simular la navegacio (tot i que tambe es podria fer).
		Pel que fa a la resposta, es un HTML prou senzill. Per a extreure dades de documents HTML arbitraris normalment es fan anar parsers HTML, pero en aquesta pagina d'estructura coneguda es mes que suficient al meu entendre fer anar una expressio regular.
		Tambe fa mes facil la feina saber que les dades METAR son com son, una tirallonga ASCII sense massa complicacio des d'aquest punt de vista.
		Et passo un script que podria ser un punt de partida, nomes treu les dades METAR per stdout, una fila per aeroport. Rep els codis d'aeroport com a arguments:
		    perl fetch_metar.pl LEBL LEGE
		Naturalment si volguessis ajuda en modificar-lo no dubtis a escriure.
		Fa anar el modul LWP::UserAgent:
		    cpan install Bundle::LWP
		Espero que t'ajudi,
		Xavier
		use strict;
		use warnings;
		use URI;
		use LWP::UserAgent;
		my @airports = @ARGV;
		die < 
		Si us plau, passam'm algun codi d'aeroport, com ara
		    perl $0 LEBL LEGE
		EOS
		my $url = URI->new('http://aviationweather.gov/adds/metars');
		$url->query_form(
		    station_ids => join(' ', @airports),
		    std_trans   => 'standard',
		    chk_metars  => 'on',
		    hoursStr    => 'most recent only',
		);
		my $ua  = LWP::UserAgent->new;
		my $res = $ua->get($url);
		if ($res->is_success) {
		    my $html = $res->decoded_content;
		    while ($html =~ /]+>([^ 
		        print "$1\n";
		    } 
		} else {
		    die $res->status_line;
		}

		_______________________________________________
		llista dels Barcelona-pm
		Barcelona-pm a pm.org
		http://mail.pm.org/mailman/listinfo/barcelona-pm
		BCN Perl Mongers: http://barcelona.pm.org

 

 
-------------- part següent --------------
Un document HTML ha estat eliminat...
URL: <http://mail.pm.org/pipermail/barcelona-pm/attachments/20130822/9f4ed66b/attachment.html>


Més informació sobre la llista de correu Barcelona-pm