2010-12-14 80 views
12

我一直在尋找一種API來爲另一種算法的一部分自動檢索Google Insights信息,但一直無法找到任何東西。 Google上的第一個結果是提供了一個現在已經過時的python插件。有沒有Google Insights API?

這樣的API是否存在,或者是否有人寫過插件,可能是python?

回答

7

據我所知,沒有可作爲尚未API,也不是有來自谷歌的見解中提取數據的方法的工作實現。然而,我發現了一個解決我的(稍微更具體)的問題,這可以通過知道搜索某些術語的次數來解決。

這可以通過與web瀏覽器搜索欄的Google Suggest協議接口來完成。當你說一個字的時候,它會返回一個建議短語的列表以及每個階段被搜索的次數(我不確定時間單位,大概是在去年)。

這裏是在O'reilly Answers這樣做,從odewahn1代碼稍微適應和關於Python 2.6和工作的一些Python代碼下:

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」,它現在只有數據屬性。 – 2013-08-01 16:59:00

+0

我想知道目前是否還沒有相關的官方API可用(2014)。搜索了一段時間,但沒有找到任何東西。 – 2014-06-28 10:19:08

0

我找不到Google提供的任何文檔,但Brad Jasper似乎想出了一些方法來查詢Insights的信息。注意:我不確定它是否仍然有效...祝你好運!

Use Python to Access Google Insights API

+0

是的,這將是我在我的問題中提到的那個。不幸的是,它不再工作。 – 2010-12-14 18:09:52

2

我剛開始尋找,結果發現使用python在以下script。基本上它是通過專門的報價,以谷歌歷史財務數據庫檢索的好方法。

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] 
相關問題