Sto cercando di:Cercando di accedere in Google al fine di scaricare i dati di Google Trends
- Accesso a Google
- Download dati CSV da Google Trends
ci sto riuscendo a (1) ma non in (2). Vengo tornato un'autorizzazione-token da parte di Google, e mando con la conseguente richiesta di tendenze, ma tuttavia Google poi restituisce un errore: "È necessario connettersi per esportare i dati da Google Trends":
// http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html
$data = array(
'accountType' => 'GOOGLE',
'Email' => '[email protected]',
'Passwd' => 'my.password',
'service' => 'trendspro',
'source' => 'company-application-1.0'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPAUTH, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
preg_match("/Auth=([a-z0-9_\-]+)/i", $response, $matches);
// We now have an authorization-token
$headers = array(
"Authorization: GoogleLogin auth=" . $matches[1],
"GData-Version: 3.0"
);
curl_setopt($ch, CURLOPT_URL, "http://www.google.com/trends/viz?q=MSFT&date=2011-2&geo=all&graph=all_csv&sort=0&sa=N");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, false);
$csv = curl_exec($ch);
curl_close($ch);
// Returns : "You must be signed in to export data from Google Trends"
// Expected: CSV data stream
print_r($csv);
Per qualche motivo, i token di autenticazione che invii a Google Trends non vengono accettati o ignorati. Non so esattamente cosa succede, poiché non vengono fornite ulteriori informazioni di errore.
Qualcuno vede cosa sto facendo male? Se si riesce a farlo funzionare, il che significa che Google sta tornando i dati CSV, quindi la bontà è tuo e che entrambi hanno un ritardo presente :-) Natale
Così ho capito il problema non ha nulla a che fare con cURL. Quello che ho fatto è stato:
- Vai a https://www.google.com/accounts/ClientLogin?accountType=GOOGLE&[email protected]&Passwd=my.password&service=trendspro&source=ding-dang-1. Il ritorno è:
SID=DQAAAMUAAADMqt...aYPaYniC_iW LSID=DQAAAMcAAACI5...YDTBDt_xZC9 Auth=DQAAAMgAAABm8...trXgqNv-g0H
- ho copiare l'Auth token restituito: DQAAAMgAAABm8 ... trXgqNv-g0H
- io mando una richiesta GET utilizzando l'estensione Chrome per postino http://www.google.com/trends/viz?q=MSFT&date=2011-2&geo=all&graph=all_csv&sort=0&sa=N utilizzando l'intestazione:
GData-Version: 3.0 Authorization: GoogleLogin auth=DQAAAMgAAABm8...trXgqNv-g0H
- vengo tornato:
intestazioni:
Date: Tue, 27 Dec 2011 00:17:20 GMT Content-Encoding: gzip Content-Disposition: filename=trends.csv Content-Length: 97 X-XSS-Protection: 1; mode=block Server: Google Trends X-Frame-Options: SAMEORIGIN Content-Type: text/csv; charset=UTF-8 Cache-Control: private
dati:
You must be signed in to export data from Google Trends
In altre parole, sto inviando intestazioni come definito da Google su http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html ma senza fortuna di ottenere un ritorno adeguato. C'è circa * nessuna * informazione sull'Interwebs a riguardo. Chissà qual è il problema qui?
Avete controllato qui http://stackoverflow.com/questions/4986758/oauth-google-trends-download-csv-file – Pateman
Grazie per il suggerimento. Il tuo link mi ha indirizzato a http://stackoverflow.com/questions/1656446/download-csv-from-google-insight-for-search, ma anche questo non risolve il problema. Sto facendo esattamente come spiegato lì, ma senza fortuna, e non riesco a vedere cosa sto facendo male ... – Pr0no
Non sono sicuro che questo aiuti, ma un ragazzo ha avuto un problema con l'accesso ai siti web HTTPS usando cURL e il suo problema è stato risolto qui: http://stackoverflow.com/questions/316099/cant-connect-to-https-site-using-curl-returns-0-length-content-instead-what-c – Pateman