2009-11-01 9 views

risposta

7

Per fare questo lavoro è necessario prima authenticate per ottenere un valido SID per un dato sito google che può essere utilizzato per accedere ai dati. Ecco come è possibile ottenere ciò:

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

Perfetto! Ma per ottenere una stringa usa Encoding.Unicode.GetString (csv); invece di Encoding.UTF8.GetString (csv) – Dragouf

+0

Ciao, da oggi sembra che non funzioni più. Il metodo Clientlogin non restituisce informazioni sufficienti sui diversi cookie da creare (rispetto a ServiceLogin) e riceviamo questo messaggio "Hai raggiunto il limite di quota. Riprova più tardi." – Dragouf

+0

Abbastanza sicuro che questo non funziona più come Google lo ha deprecato. –

1

Ok è cambiato da pochi giorni.

Ora è necessario passare auth e non SID.

Così il codice è ora:

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

E ora è lavorare di nuovo per me.

+0

Sai come scaricare i dati dallo strumento webmaster di Google? Ti piace il problema di scansione per ogni sito? – Mithil

+0

Questo non funziona più. –

Problemi correlati