2010-12-14 20 views
12

Ho cercato un'API per recuperare automaticamente le informazioni di Google Insights per parte di un altro algoritmo, ma non sono riuscito a trovare nulla. Il primo risultato su Google consegna un sito con un plugin python che è ormai obsoleto.Esiste un'API di Google Insights?

Esiste una tale API o qualcuno ha scritto un plug-in, forse per python?

risposta

7

Per quanto posso dire, non v'è alcuna API disponibile a partire da ancora, e non c'è un'implementazione di lavoro di un metodo per l'estrazione di dati da Google Insights. Tuttavia, ho trovato una soluzione al mio problema (leggermente più specifico), che potrebbe davvero essere risolto sapendo quante volte vengono cercati determinati termini.

Questo può essere fatto interfacciato con il protocollo di Google Suggest per le barre di ricerca di webbrowser. Quando gli dai una parola, restituisce un elenco di frasi suggerite e il numero di volte in cui ogni fase è stata cercata (non sono sicuro riguardo all'unità di tempo, presumibilmente nell'ultimo anno).

Ecco del codice python per fare questo, leggermente adattata dal codice odewahn1 a O'reilly Answers e lavorare su Python 2.6 e inferiore:

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]) 

Questo almeno risolve il problema in parte, ma purtroppo è ancora difficile ottenere in modo affidabile il numero di ricerche per qualsiasi parola o frase specifica e impossibile ottenere la cronologia di ricerca di frasi diverse.

+1

Sembra che si siano sbarazzati dell'attributo int. Se riesco a "http://google.com/complete/search?output=toolbar&q=hello%20world", ora ha solo l'attributo dei dati. –

+0

Mi chiedevo se al momento non sono ancora disponibili API ufficiali correlate (2014). Ho cercato un po 'ma non ho ancora trovato nulla. –

0

Non sono riuscito a trovare alcuna documentazione fornita da Google, ma Brad Jasper sembra aver escogitato un metodo per interrogare le informazioni di Insights. Nota: non sono sicuro che funzioni ancora ... Buona fortuna!

Use Python to Access Google Insights API

+0

Sì, sarebbe quello a cui ho fatto riferimento nella mia domanda. Sfortunatamente, non funziona più. –

2

Ho appena iniziato la ricerca di esso e trovato un buon modo per recuperarlo utilizzando python nel seguente script .Basically sta passando citazione specializzata to google base di dati finanziari storici .

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] 
Problemi correlati