我想获得用户在谷歌上查找网页时使用的关键词(又名" 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。有人有"最近"关于那个经历? (可能使用其他编程语言或库)。
答案 0 :(得分:0)
API完全可以运行。
尝试使用['country','device','query']而不是等效的。
...并且文档在分页方面是错误的 - 它支持分页,但有一点需要注意:当页面包含少于5000行时停止。此外,您必须在页面之间进行重复数据删除,因为输出仅在“单击”列中排序,并且在下面随机/不一致地排序,这意味着如果在有2个页面中断时发生分页,则可以在多个页面中获取相同的行或更多具有该点击次数的行(特别是0点击行时不好)。