2010-12-14 2 views
12

Я искал API для автоматического получения информации о Google Insights для части другого алгоритма, но не смог ничего найти. Первый результат в Google предоставляет сайт с плагином python, который теперь устарел.Есть ли API-интерфейс Google Insights?

Существует ли такой API, или кто-нибудь написал плагин, возможно, для python?

ответ

7

Насколько я могу сказать, что нет API доступен как еще, и ни есть рабочая реализация метода для извлечения данных из Google Insights. Тем не менее, я нашел решение моей (чуть более конкретной) проблемы, которая действительно может быть решена, зная, сколько раз искали определенные термины.

Это можно сделать, связавшись с протоколом Google Suggest для баров поиска веб-браузера. Когда вы даете ему слово, он возвращает список предложенных фраз, а также количество раз, когда каждая фаза была обыскана (я не уверен в отношении единицы времени, предположительно в прошлом году).

Вот некоторые питона код для этого, слегка адаптировано из кода по odewahn1 в O'reilly Answers и работает на Python 2.6 и ниже:

from sgmllib import SGMLParser 
import urllib2 
import urllib 

# Define the class that will parse the suggestion XML 
class PullSuggestions(SGMLParser): 

    def reset(self): 
     SGMLParser.reset(self) 
     self.suggestions = [] 
     self.queries = [] 

    def start_suggestion(self, attrs): 
     for a in attrs: 
     if a[0] == 'data': self.suggestions.append(a[1]) 

    def start_num_queries(self, attrs): 
     for a in attrs: 
     if a[0] == 'int': self.queries.append(a[1]) 

# ENTER THE BASE QUERY HERE 

base_query = "" #This is the base query 

base_query += "%s" 
alphabet = "abcdefghijklmnopqrstuvwxyz" 
for letter in alphabet: 
    q = base_query % letter; 
    query = urllib.urlencode({'q' : q}) 
    url = "http://google.com/complete/search?output=toolbar&%s" % query 

    res = urllib2.urlopen(url) 
    parser = PullSuggestions() 
    parser.feed(res.read()) 
    parser.close() 

    for i in range(0,len(parser.suggestions)): 
     print "%s\t%s" % (parser.suggestions[i], parser.queries[i]) 

Это, по крайней мере решает эту проблему частично, но, к сожалению, до сих пор трудно надежно получить количество поисков какого-либо конкретного слова или фразы и невозможно получить историю поиска разных фраз.

+1

Похоже, что они избавились от атрибута int. Если я добрался до «http://google.com/complete/search?output=toolbar&q=hello%20world», у него теперь есть атрибут данных. –

+0

Мне было интересно, если в настоящее время нет официального официального API (2014). Искал какое-то время, но ничего не нашел. –

0

Я не смог найти документацию, предоставленную Google, но, по-видимому, Брэд Джаспер придумал какой-либо метод запроса информации Insights для получения информации. Примечание: я не уверен, что он все еще работает ... Удачи!

Use Python to Access Google Insights API

+0

Да, это был тот, о котором я говорил в своем вопросе. К сожалению, он больше не работает. –

2

Я только начал искать его и нашел хороший способ получить его с помощью питона в следующем script .Basically его прохождении специализированной цитаты в Google историческую финансовую базу ,

def get_index(gindex, startdate=20040101): 
    """ 
    API wrapper for Google Domestic Trends data. 
     https://www.google.com/finance/domestic_trends 

    Available Indices: 

     'ADVERT', 'AIRTVL', 'AUTOBY', 'AUTOFI', 'AUTO', 'BIZIND', 'BNKRPT', 
     'COMLND', 'COMPUT', 'CONSTR', 'CRCARD', 'DURBLE', 'EDUCAT', 'INVEST', 
     'FINPLN', 'FURNTR', 'INSUR', 'JOBS', 'LUXURY', 'MOBILE', 'MTGE', 
     'RLEST', 'RENTAL', 'SHOP', 'TRAVEL', 'UNEMPL' 

    """ 
    base_url = 'http://www.google.com/finance/historical?q=GOOGLEINDEX_US:' 
    full_url = '%s%s&output=csv&startdate=%s' % (base_url, gindex, startdate) 
    dframe = read_csv(urlopen(full_url), index_col=0) 
    dframe.index = DatetimeIndex(dframe.index) 
    dframe = dframe.sort_index(0) 
    for col in dframe.columns: 
     if len(dframe[col].unique()) == 1: 
      dframe.pop(col) 
    if len(dframe.columns) == 1 and dframe.columns[0] == 'Close': 
     dframe.columns = [gindex] 
    return dframe[gindex] 
Смежные вопросы