2016-10-04 3 views
3

Google에서 웹 페이지를 찾기 위해 사용자가 사용하는 키워드 (일명 "queries")를 가져오고 싶습니다. Google 애널리틱스에 표시되는 동일한 키워드. 나는 API (Search Console/Webmaster Tool API)를 사용하여 그것들을 얻고 싶다. 승인 된 답변 here에서 언급했듯이이 부분의 Google WebMaster 도구 API는 공개되지 않았습니다.Google 검색에서 "검색어 검색"데이터

그렇게 말하고있는 공식 Google 페이지가 없기 때문에 이것이 여전히 유효한지 궁금합니다. 그럼에도 불구하고 API에서 데이터를 검색 할 수 없었습니다.

(펄을 Net::Google::WebmasterTools과 함께 사용하여) 코드를 작성하려고했습니다. 승인하고 요청을 보낼 수있었습니다. 또한 상태 200의 응답이 있지만 데이터가 없습니다 (특히 원하는 키워드가 없습니다). 그럼에도 불구하고 Search 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

관련 문제