来自Google WMT的“搜索查询”数据

时间:2016-10-04 12:01:28

标签: perl perl-module google-webmaster-tools

我想获得用户在谷歌上查找网页时使用的关键词(又名" queries")。 Google Analytics中显示的相同关键字。我想让他们使用API​​(Search Console / Webmaster Tool API)。正如已接受的回复here中所述,有一段时间,Google WebMaster工具API的这一部分无法向公众开放。

我想知道这是否仍然有效,因为我发现没有正式的谷歌页面。然而,我无法从API中检索数据。

我尝试编写脚本(使用Perl和Net::Google::WebmasterTools)。我能够授权并发送请求。我还得到状态为200但没有数据的回复(特别是没有关键字,这是我想要的)。不过,我可以在浏览搜索网站管理员工具分析报告时看到关键字。

#!/usr/bin/perl

use Net::Google::WebmasterTools;
use Net::Google::WebmasterTools::OAuth2;
use Data::Dumper;
use URL::Encode 'url_encode';

my $site_url      = url_encode("http://www.example.com");
my $client_id     = "[ID]";
my $client_secret = "[SECRET]";
my $refresh_token = "[TOKEN]";

my $wmt = Net::Google::WebmasterTools->new;

my $oauth = Net::Google::WebmasterTools::OAuth2->new(
    client_id     => $client_id,
    client_secret => $client_secret,
);

my $token = $oauth->refresh_access_token($refresh_token);
print Dumper($token);

$wmt->token($token);

# Build request
my $req = $wmt->new_request(
    site_url            => "$site_url",
    report_name         => "searchAnalytics",
    method              => "query",
    dimensions          => ['Country','Device','Query'],
    #search_type        => 'web',
    start_date          => '2015-01-01',
    end_date            => '2015-09-30',
    row_limit           => 1000,
);
print $req;
# Send request
my $res = $wmt->retrieve($req);
die("GWMT error: " . $res->error_message) if !$res->is_success;
# Print results

print Dumper($res);

print
    "Results: 1 - ", $res->items_per_page,
    " of ", $res->total_results, "\n\n";

for my $row (@{ $res->rows }) {
    print
        $row->get_source,  ": ",
        $row->get_visits,  " visits, ",
        $row->get_bounces, " bounces\n";
}

print
    "\nTotal: ",
    $res->totals("visits"),  " visits, ",
    $res->totals("bounces"), " bounces\n";

我还尝试使用webmasters.searchanalytics.query的API资源管理器,但作为回复,我得到500 Internal Server Error

我不确定我是否以错误的方式使用api,或者是否仍然不支持api。有人有"最近"关于那个经历? (可能使用其他编程语言或库)。

1 个答案:

答案 0 :(得分:0)

API完全可以运行。

尝试使用['country','device','query']而不是等效的。

...并且文档在分页方面是错误的 - 它支持分页,但有一点需要注意:当页面包含少于5000行时停止。此外,您必须在页面之间进行重复数据删除,因为输出仅在“单击”列中排序,并且在下面随机/不一致地排序,这意味着如果在有2个页面中断时发生分页,则可以在多个页面中获取相同的行或更多具有该点击次数的行(特别是0点击行时不好)。