2013-12-05 3 views
0

Мне нужна моя программа, чтобы перейти на finance.yahoo.com и скачать исторические цены AAPl (и еще 4 других ...) в файл csv. (что он будет загружаться в базу данных ... также позже) Мне нужно, чтобы эта программа начиналась каждый вечер, загружала файл и вставляла его в db. Проблема - я наклоняю фигуру, какую ссылку я должен использовать в скрипте, так что каждый день один и тот же, и сам сценарий. Я пробовал этоusing Meachanize to download csv file

#!/usr/bin/perl 

use strict; 
use warnings; 
use WWW::Mechanize; 
my $mech = WWW::Mechanize->new; 
my $url = 'http://finance.yahoo.com/q/hp?s=AAPL+Historical+Prices'; 
$mech->get($url); 

my $local_file_name ='AAPL.csv'; 
$mech->follow_link(url_regex => qr/Download/i); 
$mech->get($url, ":content_file" => $local_file_name); 

он фактически загружает smth и хранит его в AAPl.csv - но это вздор.

ответ

0

Попробуйте это:

use strict; 
use warnings; 
use LWP::Simple qw(getstore); 

my @date = split(/\s+/, scalar localtime); 
my %month = ('Jan'=> 0, 'Feb'=> 1, 'Mar'=> 2, 'Apr'=>3, 'May'=>4, 
    'Jun'=>5, 'Jul'=> 6, 'Aug' =>7, 'Sep'=>8, 'Oct'=>9, 'Nov'=>10, 'Dec'=>11); 
my $url = 'http://ichart.finance.yahoo.com/table.csv?s=AAPL&d=$month{$date[1]}&e=$date[2]&f=$date[4]&g=d&a=8&b=7&c=1984&ignore=.csv'; 
getstore($url, "AAPL.csv"); 

Я получил ссылку от фактической загрузки ссылки. Поскольку у меня была ссылка, LWP :: Simple выглядела как лучший выбор.