我正在尝试从Google趋势中提取数据,并且仅在2次尝试后获得“您已达到每日限额”错误。
有什么方法可以解决这个问题吗?我知道Google API项目有特殊的配额限制,但Google趋势没有API。我还读到我们可能需要将它传递给一个cookie文件,这样我才能登录。有没有人遇到过这个问题?
答案 0 :(得分:4)
您可能已禁用Cookie,这会让Google趋势认为您是一名机器人
答案 1 :(得分:4)
我正在努力解决同样的问题! 从你的问题我无法弄清楚你取得了哪个阶段...... 但这是我找到的解决方案:
更多提示:
如果您在Windows下使用python / ruby进行开发,请不要忘记为OpenSSL库设置CA ROOT证书包。否则HTTPS连接将失败,您将无法登录!请参阅Getting the `certificate verify failed (OpenSSL::SSL::SSLError)` erro with Mechanize object
我建议您在程序关闭时将cookie保存到外部文件。并在启动时恢复它们。
不要忘记允许重定向,因为Google一直在使用重定向。
Ruby代码示例:
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
答案 2 :(得分:3)
我想我找到了解决问题的方法。只需确保使用Cookie PREF
调用Google趋势API。也就是说,您不需要登录Google帐户。当然,您不需要模拟浏览器。 Cookie PREF
就足够了。
行。 Cookie PREF
来自哪里?这很容易。只需打开浏览器,然后登录您的Google帐户即可。最后,在Google网站下查找Cookie PREF
,它位于域www.google.com
下。然后将Cookie PREF
的值复制到您的程序或脚本中。这就是全部。
我已经通过这种方式在几秒钟内调用了Google Trends API数百次。祝你好运!
答案 3 :(得分:-5)
我发现这篇论文关于预防或谷歌趋势中的Zeta-Jones效应,它是如此有用: 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。