2016-10-04 15 views
3

Googleでウェブページを検索するためにユーザーが使用するキーワード(別名「queries」)を取得したいと考えています。 Googleアナリティクスに表示されるのと同じキーワード。私はそれらをAPI(Search Console/Webmaster Tool API)を使って入手したいと思います。受け入れられた回答のhereに記載されているように、Google WebMasterツールAPIのこの部分が公開されていない時期がありました。Google検索の検索クエリのデータ

Googleの公式のGoogleページが見つからないため、これがまだ有効かどうかは疑問でした。それにもかかわらず、APIからデータを取得できませんでした。

(PerlでNet::Google::WebmasterToolsを使用して)コードを作成しようとしました。私は要求を認可して送ることができました。また、ステータス200の返信がありますが、データは含まれていません(特にキーワードはありません)。それにもかかわらず、検索WebmasterTools Analyticsレポートを参照する際にキーワードを確認できます。

#!/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 Explorerを使用してみましたが、応答として、私は500 Internal Server Errorを取得します。

私は間違った方法でAPIを使用するか、まだサポートされていないかどうかはわかりません。誰かがそれについて "最近"の経験を持っていますか? (たぶん別のプログラミング言語やライブラリを使用して)。

+0

[検索クエリ]データをGoogle WMTから取得するにはどうすればよいですか?](http://stackoverflow.com/questions/31270098/how-can-i-get-search-queries-data-from- google-wmt) – DaImTo

+1

私はそこに書きました。しかし、私は新しい質問としてこれを投稿することをお勧めしました。だから私はやった。 – user3215297

+0

その同じ答えは、その重複の唯一の違いと同じ質問は、言語は申し訳ありません。 – DaImTo

答えて

0

APIは完全に動作しています。

同等の適切なケースの代わりに['country'、 'device'、 'query']を試してください。

...ページングに関するページが間違っています - ページングは​​サポートされていますが、ページに5000行未満が含まれていると警告が表示されます。また、出力は「クリック」列でのみソートされるため、ページ間で重複排除する必要があります。その下にはランダム/不一致のソートが行われます。つまり、2のときにページ区切りが発生した場合、 (特に0回のクリック行では悪い)

+0

あなたは正しい、APIは期待どおりに動作しています。しかし、「国」の代わりに「国」は重要ではありませんでした。問題は、データが利用できなかった1年以上前の日付(範囲)を使用したことでした。 start_dateとend_dateについて2015年を2016年に置き換え、現在は期待通りに機能しました。 – user3215297