2011-02-13 83 views
3

我正在嘗試構建一個使用谷歌趨勢和/或谷歌洞察數據的Web應用程序,但我遇到了一些障礙。如果您在有效的Google帳戶中登錄,Google趨勢只允許您下載csv文件。因此,我不能讓我的Web應用程序下載並解析它們。Oauth google趨勢下載CSV文件

導致我開始尋找到的OAuth http://code.google.com/apis/accounts/docs/OAuth.html,但我有點不知所措。

試圖使用谷歌趨勢網址與 http://googlecodesamples.com/oauth_playground/ 生成谷歌趨勢網址的無效範圍錯誤。

我不能使用Oauth來訪問這些服務嗎?我做了一堆搜索,但沒有找到任何真正可靠的例子(至少我能理解)如何正確使用它。有一個更好的方法嗎?

有人幫我解決這個問題嗎?

+0

我知道你曾經是能夠做到這一點,但它看起來像它已經過時了。 – 2014-03-16 22:03:55

回答

1

好吧我找到了答案。我只搜索了與此問題有關的google趨勢的stackoverflow,而不是谷歌洞察。

相對於谷歌的見解搜索使我對這裏的答案: download csv from google insight for search

有人犯同樣的錯誤將有望發現這很有用。

1

截至2013年4月30日這個工程。請注意,您使用此方法的速度非常快。

static void Main(string[] args) 
    { 
     using (var client = new WebClient()) 
     { 
      var terms = new List<string>() {"debt", "profit", "euro", "dollar", "financial", "economy", "federal reserve", "earnings", "fed", "consumer spending" , "employment", "unemployment", "jobs" }; 
      var username = "your username"; 
      var password = "password"; 

      var response = client.DownloadString(string.Format("https://www.google.com/accounts/ClientLogin?accountType=GOOGLE&Email={0}&Passwd={1}&service=trendspro&source=test-test-v1", username, password)); 

      // The SID is the first line in the response 
      // The Auth line 
      var auth = response.Split('\n')[2]; 
      client.Headers.Add("Authorization", "GoogleLogin " + auth); 

      int i = 1; 
      while (terms.Count > 0) 
      { 
       // google limits 5 sets of terms per request 
       var arr = terms.Take(5).ToArray(); 
       terms = terms.Skip(5).ToList(); 

       var joined = string.Join("%2C%20", arr); 
       byte[] csv = client.DownloadData(string.Format("http://www.google.com/trends/trendsReport?hl=en-US&q={0}&cmpt=q&content=1&export=1", joined)); 

       // TODO: do something with the downloaded csv file: 
       Console.WriteLine(Encoding.UTF8.GetString(csv)); 
       File.WriteAllBytes(string.Format("report{0}.csv", i), csv); 
       i++; 
      } 

     } 
    } 
+0

這確實不再工作 – 2014-03-16 22:04:24

0

我試圖用不同的編碼語言實現相同的任務。

在該行中:client.Headers.Add(「Authorization」,「GoogleLogin」+ auth); 「+」符號是否簡單連接兩個字符串「GoogleLogin」和「Auth = * ** * *」?

貌似授權方法已經在過去的幾個月裏再次改變,如果我的實現是正確的:(