使用Meachanize下载csv文件

时间:2013-12-05 00:38:01

标签: perl csv download

我需要我的程序去finance.yahoo.com并下载AAPl的历史价格(以及其他4个......稍后)到csv文件。 (它会加载到数据库中......以后) 我需要这个程序每天晚上开始,下载文件并将其插入数据库。 问题是 - 我不知道我应该在脚本中使用什么链接,所以它每天都是相同的,以及脚本本身。我试过这个

#!/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中 - 但这是无稽之谈。

1 个答案:

答案 0 :(得分: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似乎是更好的选择。