2013-06-30 3 views
7

Я пытаюсь извлечь данные из тенденций Google и получил ошибку «Вы достигли своего дневного лимита» только после двух попыток.Ограничение по квотам Google Trends

Есть ли способ обойти это? Я знаю, что проекты API Google имеют особые ограничения по квотам, но в Google Trends нет API. Я также прочитал, что нам может понадобиться передать файл cookie, чтобы он выглядел так, как будто я вошел в систему. Кто-нибудь сталкивался с этой проблемой раньше?

ответ

4

Вы, вероятно, отключить куки, что делает Google Trends думать, что вы робот

+1

Работал для меня - я оставил adblock включенным, который сделал это. Отключите его в домене, и все в порядке. –

4

я борюсь с той же проблемой! Из вашего вопроса я не могу понять, на каком этапе вы достигли ... Но вот решение, которое я нашел:

  1. Вы должны эмулировать браузер с печеньем. Я думаю, что лучший способ сделать это - использовать библиотеку Mechanize.
  2. В первый ваша программа должна «войти в систему» ​​с использованием запроса GET к «https://accounts.google.com/Login?hl=en»
  3. Сразу после этого вы можете получить доступ к некоторым другим личностным ресурсам, но не Google Trends!
  4. После некоторого значительного времени, которое вы можете успешно получить данные трендов Google как CSV.
  5. Я до сих пор не обнаружил точный период времени, но это более 10 минут и менее нескольких часов :). Вот почему сохранение ваших файлов cookie для последнего использования - хорошая идея!

Еще несколько советов:

  • Если вы разрабатываете с использованием Python/рубин под Windows, не забудьте установить CA корневые сертификаты пакет для библиотеки OpenSSL. В противном случае соединение HTTPS завершится неудачно, и вы не войдете в систему! См. Getting the `certificate verify failed (OpenSSL::SSL::SSLError)` erro with Mechanize object

  • Я рекомендую вам сохранять файлы cookie во внешний файл при завершении программы. И восстановление их при запуске.

  • Не забудьте разрешить переадресацию, поскольку Google постоянно использует перенаправления.

рубин пример кода:

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

Я думаю, что я нашел способ решить эту проблему. Просто убедитесь, что вы вызываете API Google Trends с файлом cookie PREF. То есть вам не нужно заходить в учетную запись Google. Конечно, вам не нужно эмулировать браузер. Файл cookie PREF достаточно.

OK. Где происходит печенье PREF? Это очень просто. Просто откройте браузер и войдите в свою учетную запись Google. Наконец, найдите файл cookie PREF под веб-сайтом Google, он находится только под доменом www.google.com. Затем скопируйте значение cookie PREF в вашу программу или скрипт. Это все.

Я вызвал API Google Trends сотни раз в несколько секунд таким образом. Удачи тебе!

+0

Можете ли вы рассказать мне, как использовать его в java ?? –

-5

Я нашел этот документ о предотвращении или просто эффекте Зета-Джонса в Google Trends, он был настолько полезен: G Fond, A Gamanb, E Haffenb, P Llorca. "Google Trends: ready for real-time suicide prevention or just a Zeta-Jones effect ?." Международный журнал компьютерных сетей и средств связи 3, вып. 1 (2015): 1-5.

+1

Можете ли вы объяснить, как это отвечает на вопрос ОФ? – ChipsLetten

Смежные вопросы