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

“Search Queries” data from Google WMT

我想获取用户用来在 google 上查找网页的关键字(又名“queries”)。 Google 分析中显示的相同关键字。我想让他们使用 API(Search Console / Webmaster Tool API). As mentioned in the accepted answere 有一段时间 Google WebMaster 工具 API 的这一部分对 public 不可用。

我想知道这是否仍然有效,因为我没有找到官方 google 页面这样说。尽管如此,我还是无法从 API.

中检索数据

我尝试编写脚本(使用带有 Net::Google::WebmasterTools 的 Perl)。我能够授权并发送请求。我还收到状态为 200 但不包含任何数据的回复(尤其是没有关键字,这正是我想要得到的)。不过,我在浏览 Search WebmasterTools 分析报告时可以看到关键字。

#!/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";

我也尝试使用 API Explorer for webmasters.searchanalytics.query 但作为响应我得到 500 Internal Server Error.

我不确定我是否以错误的方式使用了 api 或者它是否仍然不受支持。有人 "recent" 有这方面的经验吗? (也许通过使用另一种编程语言或库)。

API 已完全正常运行。

尝试 ['country','device','query'] 而不是对应的适当大小写。

...关于分页的文档是错误的——它确实支持分页,但有一个警告:当页面包含少于 5000 行时停止。此外,您还必须在页面之间进行重复数据删除,因为输出仅在 'clicks' 列上排序,而下方是 randomly/inconsistently 排序,这意味着如果发生分页符,您可以在多个页面中获得同一行当有 2 行或更多行具有该点击次数时(点击次数为 0 的行尤其糟糕)。