2010-12-14 38 views
12

Szukałem interfejsu API, aby automatycznie pobierać informacje z Google Insights w ramach części innego algorytmu, ale nie udało się znaleźć niczego. Pierwszy wynik w Google dostarcza witrynę z wtyczką python, która jest już nieaktualna.Czy istnieje interfejs API Google Insights?

Czy istnieje takie API lub ktoś napisał wtyczkę, być może dla Pythona?

Odpowiedz

7

O ile mi wiadomo, nie ma dostępnych jak dotąd API, ani czy jest realizacja pracy metody ekstrakcji danych z Google Insights. Jednak znalazłem rozwiązanie mojego (nieco bardziej szczegółowego) problemu, który można by naprawdę rozwiązać, wiedząc, ile razy wyszukiwane są określone terminy.

Można to zrobić, łącząc się z protokołem Google Suggest dla pasków wyszukiwania w przeglądarce internetowej. Kiedy dajesz słowo, zwraca listę sugerowanych fraz, jak również liczbę przeszukiwań każdej fazy (nie jestem pewien co do jednostki czasu, przypuszczalnie w ostatnim roku).

Oto niektóre kodu Pythona za robienie tego, nieznacznie dostosowane z kodu przez odewahn1 na O'reilly Answers i pracy na Pythonie 2.6 i niższe:

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

To przynajmniej rozwiązuje problem w części, ale niestety jest to nadal trudno jest wiarygodnie uzyskać liczbę wyszukiwań określonego słowa lub frazy i niemożliwe jest uzyskanie historii wyszukiwania różnych wyrażeń.

+1

Wygląda na to, że pozbyli się atrybutu int. Jeśli przejdę do "http://google.com/complete/search?output=toolbar&q=hello%20world", to właśnie ma teraz atrybut danych. –

+0

Zastanawiam się, czy obecnie nie ma jeszcze dostępnego oficjalnego interfejsu API (2014). Szukano przez chwilę, ale jeszcze nic nie znalazłem. –

0

Nie mogłem znaleźć żadnej dokumentacji dostarczonej przez Google, ale Brad Jasper prawdopodobnie wymyślił jakąś metodę sprawdzania informacji w Insights. Uwaga: Nie jestem pewien, czy to nadal działa ... Powodzenia!

Use Python to Access Google Insights API

+0

Tak, to jest ten, o którym mowa w moim pytaniu. Niestety, to już nie działa. –

2

Właśnie rozpoczął poszukiwania dla niego i znaleźć dobry sposób, aby je odzyskać przy użyciu Pythona w następującym script .Basically jest przechodzącej specjalistycznego cytatem google historyczną bazę finansową .

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] 
Powiązane problemy