2009-11-01 10 views

Respuesta

7

Para hacer esto, primero necesitas authenticate para obtener un SID válido para un sitio de google dado que se puede usar para acceder a los datos. Así es como se puede lograr esto:

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

¡Perfecto! Pero para obtener el uso de cadenas, Encoding.Unicode.GetString (csv); en lugar de Encoding.UTF8.GetString (csv) – Dragouf

+0

Hola, ya que hoy parece que ya no funciona. El método Clientlogin no arroja suficiente información sobre las diferentes cookies para crear (en comparación con ServiceLogin) y recibimos este mensaje "Ha alcanzado su límite de cuota. Vuelva a intentarlo más tarde". – Dragouf

+0

Bastante seguro de que esto ya no funciona porque Google lo ha dejado de usar. –

1

Ok, cambió hace unos días.

Ahora debe pasar auth y no SID.

Así código es ahora:

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); 
     } 
    } 
} 

Y ahora que funcione de nuevo para mí.

+0

¿Sabes cómo descargar datos de la herramienta google webmaster? ¿Te gusta el problema de rastreo para cada sitio? – Mithil

+0

Esto ya no funciona. –

Cuestiones relacionadas