2013-06-30 19 views
7

Ich versuche, Daten aus Google-Trends zu extrahieren und habe nach nur 2 Versuchen den Fehler "Sie haben Ihr Tageslimit erreicht" erhalten.Limitkontingente für Google Trends

Gibt es eine Möglichkeit, dies zu umgehen? Ich weiß, dass Google API-Projekte spezielle Kontingentgrenzen haben, Google Trends jedoch keine API. Ich lese auch, dass wir möglicherweise eine Cookie-Datei übergeben müssen, so dass es so aussieht, als wäre ich eingeloggt. Hat jemand dieses Problem schon einmal gesehen?

Antwort

4

Sie wahrscheinlich Ihre Cookies deaktiviert, die Google Trends denken macht bist du ein Roboter

+1

Arbeitete für mich - ich hatte Adblock eingeschaltet, die es getan hat. Deaktivieren Sie es auf der Domain und es ist in Ordnung. –

4

ich mit dem gleichen Problem bin zu kämpfen! Aus Ihrer Frage kann ich nicht herausfinden, in welchem ​​Stadium haben Sie erreicht ... Aber hier ist die Lösung, die ich gefunden habe:

  1. Sie Browser mit Cookies emulieren soll. Ich denke, der beste Weg, es zu tun ist, Mechanize Bibliothek zu verwenden.
  2. Zunächst sollte Ihr Programm „login“ GET-Anforderung verwenden, nachdem das „https://accounts.google.com/Login?hl=en
  3. Unmittelbar Sie einige andere persönliche Ressourcen zugreifen können, aber nicht Trends google!
  4. Nach einigen signifikante Zeit können Sie erfolgreich Google Trends Daten als CSV erhalten.
  5. Ich habe immer noch nicht den genauen Zeitraum entdeckt, aber es ist mehr als 10 Minuten und weniger als mehrere Stunden :). Aus diesem Grund ist es ratsam, Cookies für den späteren Gebrauch zu speichern!

paar Tipps:

  • Wenn Sie Python/ruby ​​unter Windows entwickeln mit vergessen Sie nicht, für OpenSSL-Bibliothek CA Root-Zertifikate Paket einzurichten. Andernfalls wird die HTTPS-Verbindung fehlschlagen und Sie werden sich nicht einloggen! Siehe Getting the `certificate verify failed (OpenSSL::SSL::SSLError)` erro with Mechanize object

  • Ich empfehle Ihnen, Cookies beim Herunterfahren des Programms in eine externe Datei zu speichern. Und sie beim Start wiederherstellen.

  • Vergessen Sie nicht, Weiterleitungen zuzulassen, da Google ständig Redirects verwendet.

Ruby-Code Beispiel:

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

Ich glaube, ich habe einen Weg gefunden, um das Problem zu lösen. Stellen Sie sicher, dass Sie das Google Trends API mit dem Cookie PREF aufrufen. Das bedeutet, dass Sie sich nicht im Google-Konto anmelden müssen. Natürlich müssen Sie den Browser nicht emulieren. Der Cookie PREF ist gerade genug.

OK. Woher kommt der Cookie PREF? Es ist sehr leicht. Öffnen Sie einfach den Browser und melden Sie sich in Ihrem Google-Konto an. Schließlich, suchen Sie den Cookie PREF unter der Google-Website, es ist nur unter der Domäne www.google.com. Kopieren Sie dann den Wert des Cookies PREF zu Ihrem Programm oder Skript. Das ist alles.

Ich habe auf diese Weise die Google Trends API Hunderte Male in einigen Sekunden aufgerufen. Viel Glück!

+0

können Sie mir sagen, wie man es in Java verwendet? –