2009-11-01 16 views

Odpowiedz

7

Aby to zadziałało musisz najpierw authenticate w celu uzyskania ważnej SID dla danej witryny Google, której można użyć do uzyskania dostępu do danych. Oto, jak możesz to osiągnąć:

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (var client = new WebClient()) 
     { 
      // TODO: put your real email and password in the request string 
      var response = client.DownloadString("https://www.google.com/accounts/ClientLogin?accountType=GOOGLE&[email protected]&Passwd=secret&service=trendspro&source=test-test-v1"); 
      // The SID is the first line in the response 
      var sid = response.Split('\n')[0]; 
      client.Headers.Add("Cookie", sid); 
      byte[] csv = client.DownloadData("http://www.google.com/insights/search/overviewReport?q=test&cmpt=q&content=1&export=2"); 

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

Idealny! Ale aby uzyskać ciąg znaków, należy użyć Encoding.Unicode.GetString (csv); zamiast Encoding.UTF8.GetString (csv) – Dragouf

+0

Witam, od dzisiaj wygląda na to, że już nie działa. Metoda Clientlogin nie zwraca wystarczających informacji o różnych plikach cookie, które można utworzyć (w porównaniu do ServiceLogin), a otrzymujemy komunikat "Osiągnąłeś swój limit przydziału. Spróbuj ponownie później." – Dragouf

+0

Dość pewne, że to już nie działa, ponieważ Google go wycofał. –

1

OK, zmieniło się od kilku dni.

Teraz musisz przekazać auth, a nie SID.

kod tak jest teraz:

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (var client = new WebClient()) 
     { 
      // TODO: put your real email and password in the request string 
      var response = client.DownloadString("https://www.google.com/accounts/ClientLogin?accountType=GOOGLE&[email protected]&Passwd=secret&service=trendspro&source=test-test-v1"); 
      // The Auth line 
      var auth = response.Split('\n')[2]; 
      client.Headers.Add("Authorization", "GoogleLogin " + auth); 
      byte[] csv = client.DownloadData("http://www.google.com/insights/search/overviewReport?q=test&cmpt=q&content=1&export=2"); 

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

A teraz znowu pracować dla mnie.

+0

Czy wiesz, jak pobrać dane z narzędzia Google dla webmasterów? Jak problem z indeksowaniem dla każdej witryny? – Mithil

+0

To już nie działa. –

Powiązane problemy