从Google insight下载.csv文件以使用Perl进行搜索时出现问题

时间:2012-08-02 23:12:42

标签: perl

我正在尝试使用 perl 谷歌洞察搜索下载.csv文件。但我遇到两个问题:

  1. 下载网址似乎是重定向网址,因此无法使用LWP模块下载。 网址是 “ http://www.google.com/insights/search/overviewReport?q=dizzy&date=1%2F2012%205m&cmpt=date&content=1&export=1 ”。您可以尝试一下,可能应先登录。

  2. 似乎我必须在下载之前存储会话。如果不这样做,我会得到一个警告 - 就像“达到配额限制”。

  3. 如何使用 PERL 自动下载此.csv文件?谢谢你的帮助。

    这是我的代码:

    #create userAgent object
    my $ua = LWP::UserAgent->new;
    $ua->agent("MyApp/0.1 ");
    
    #create a request
    my $req = HTTP::Request->new(GET => 'http://www.google.com/insights/search/overviewReport?q=dizzy&date=1%2F2012%205m&cmpt=date&content=1&export=1');
    
    my $res = $ua->request($req);
    
    #check the outcome of the response
    if($res->is_success) {
        print $res->content;
    }
    else {
        print $res->status_line, "\n";
    }    
    

1 个答案:

答案 0 :(得分:0)

我强烈建议您使用WWW :: Mechanize进行Web自动化(这是高级LWP :: UserAgent):

#!/usr/bin/perl

use strict;
use warnings;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
$mech->agent_alias("Windows IE 6");

$mech->get("https://accounts.google.com/serviceLogin");
$mech->submit_form(

    form_id => "gaia_loginform",
    fields => {

        Email => 'gangabass@gmail.com',
        Passwd => 'password',
    },
    button => "signIn",
);

$mech->get("http://www.google.com/insights/search/overviewReport?q=dizzy&date=1%2F2012%205m&cmpt=date&content=1&export=1");
open my $fh, ">:encoding(utf8)", "report.csv" or die $!;
print {$fh} $mech->content();
close $fh;