我正在尝试从 Google 趋势中提取数据,并且仅在 2 次尝试后出现“您已达到每日限额”错误。
有什么办法可以解决这个问题吗?我知道 Google API 项目有特殊的配额限制,但 Google Trends 没有 API。我还读到我们可能需要向它传递一个 cookie 文件,以便看起来我已经登录。以前有人遇到过这个问题吗?
我正在尝试从 Google 趋势中提取数据,并且仅在 2 次尝试后出现“您已达到每日限额”错误。
有什么办法可以解决这个问题吗?我知道 Google API 项目有特殊的配额限制,但 Google Trends 没有 API。我还读到我们可能需要向它传递一个 cookie 文件,以便看起来我已经登录。以前有人遇到过这个问题吗?
我正在努力解决同样的问题!从您的问题中,我无法弄清楚您达到了什么阶段......但这是我找到的解决方案:
还有一些提示:
如果您在 Windows 下使用 python / ruby 进行开发,请不要忘记为 OpenSSL 库设置 CA ROOT 证书包。否则 HTTPS 连接将失败,您将无法登录!请参阅使用 Mechanize 对象获取“证书验证失败 (OpenSSL::SSL::SSLError)”错误
我建议您在程序关闭时将 cookie 保存到外部文件。并在启动时恢复它们。
不要忘记允许重定向,因为谷歌一直在使用重定向。
红宝石代码示例:
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
您可能禁用了 cookie,这让 Google 趋势认为您是机器人
我想我已经找到了解决问题的方法。只需确保您使用 cookie 调用 Google Trends API PREF
。那就是你不需要登录谷歌帐户。当然,您不需要模拟浏览器。饼干PREF
就够了。
好的。饼干PREF
是从哪里来的?这很容易。只需打开浏览器,然后登录您的 Google 帐户。最后,在谷歌网站下查找cookie PREF
,它就在域下www.google.com
。然后将cookie的值复制PREF
到您的程序或脚本中。就这样。
我已经通过这种方式在几秒钟内调用了数百次 Google Trends API。祝你好运!
我在谷歌趋势中发现了这篇关于预防或只是 Zeta-Jones 效应的论文,它非常有用:G Fond、A Gamanb、E Haffenb、P Llorca。“谷歌趋势:准备好实时预防自杀还是只是 Zeta-Jones 效应?” 国际计算机网络和通信安全杂志 3,没有。1 (2015): 1-5。