2013-06-30 14 views
7

Sto provando a estrarre dati dalle tendenze di Google e ho ottenuto un errore "Hai raggiunto il limite giornaliero" dopo solo 2 tentativi.Limite quota Google Trends

C'è un modo per aggirare questo? So che i progetti API di Google hanno limiti di quota speciali, ma Google Trends non ha un'API. Leggo anche che potremmo aver bisogno di passarlo un file cookie in modo che sembri come se avessi effettuato l'accesso. Qualcuno ha affrontato questo problema prima?

risposta

4

Probabilmente disabilitato i cookie, che rende Google Trends pensare che sei un robot

+1

Ha funzionato per me - Avevo lasciato adblock acceso che lo ha fatto. Disabilitalo nel dominio e va bene. –

4

sto lottando con lo stesso problema! Dalla tua domanda io non riesco a capire quale fase hai raggiunto ... Ma ecco la soluzione che ho trovato:

  1. Si dovrebbe emulare il browser con i cookie. Penso che il modo migliore per farlo sia usare la libreria Mechanize.
  2. In un primo momento il programma dovrebbe "login" con richiesta GET a "https://accounts.google.com/Login?hl=en"
  3. Subito dopo che è possibile accedere ad alcune altre risorse personali, ma non google tendenze!
  4. Dopo un po 'di tempo significativo è possibile ottenere correttamente i dati dei trend di Google come CSV.
  5. Non ho ancora scoperto il periodo esatto, ma è più di 10 minuti e meno di diverse ore :). Questo è il motivo per cui salvare i cookie per l'ultimo utilizzo è una buona idea!

qualche altro suggerimento:

  • Se si sta sviluppando con python/ruby ​​sotto Windows non dimenticare di configurare CA pacchetto di certificati di origine per la libreria OpenSSL. Altrimenti la connessione HTTPS fallirà e non effettuerai il login! Vedi Getting the `certificate verify failed (OpenSSL::SSL::SSLError)` erro with Mechanize object

  • Si consiglia di salvare i cookie su file esterno all'arresto del programma. E ripristinandoli all'avvio.

  • Non dimenticare di consentire i reindirizzamenti, perché Google sta utilizzando i reindirizzamenti tutto il tempo.

codice Ruby esempio:

require 'mechanize' 
require 'logger' 
begin 
    agent = Mechanize.new { |a| 
    a.user_agent = 'Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.16' 

    cert_store = OpenSSL::X509::Store.new 
    cert_store.add_file 'cacert.pem' 
    a.cert_store = cert_store 

    a.log = Logger.new('mech.log') 

    if File.file?('mech.cookies') 
     cookies = Mechanize::CookieJar.new 
     cookies.load('mech.cookies') 
     a.cookie_jar = cookies 
    end 

    a.open_timeout = 5 
    a.read_timeout = 6 
    a.keep_alive = true 
    a.redirect_ok = true 
    } 

    LOGIN_URL = "https://accounts.google.com/Login?hl=en&continue=http://www.google.com/trends/" 
    login_page = agent.get(LOGIN_URL) 
    login_form = login_page.forms.first 
    login_form.Email = * 
    login_form.Passwd = * 
    login_response_page = agent.submit(login_form) 

    page = agent.get(url) 

    # DO SOME TRENDS REQUESTS AFTER SIGNIFICANT PERIOD OF TIME 

ensure 
    if agent 
    agent.cookie_jar.save('mech.cookies') 
    end 
end 
3

Penso di aver trovato un modo per risolvere il problema. Assicurati di chiamare l'API di Google Trends con il cookie PREF. Questo è che non è necessario accedere all'account Google. Ovviamente, non è necessario emulare il browser. Il cookie PREF è sufficiente.

OK. Da dove proviene il cookie PREF? È molto facile. Basta aprire il browser e accedere al tuo account Google. Infine, cerca il cookie PREF sotto il sito web di Google, è appena sotto il dominio www.google.com. Quindi copia il valore del cookie PREF nel tuo programma o script. È tutto.

Ho chiamato l'API di Google Trends centinaia di volte in diversi secondi in questo modo. Buona fortuna a te!

+0

puoi dirmi come si usa in java ?? –

Problemi correlati