7

我正在尝试从 Google 趋势中提取数据,并且仅在 2 次尝试后出现“您已达到每日限额”错误。

有什么办法可以解决这个问题吗?我知道 Google API 项目有特殊的配额限制,但 Google Trends 没有 API。我还读到我们可能需要向它传递一个 cookie 文件,以便看起来我已经登录。以前有人遇到过这个问题吗?

4

4 回答 4

5

我正在努力解决同样的问题!从您的问题中,我无法弄清楚您达到了什么阶段......但这是我找到的解决方案:

  1. 您应该使用 cookie 模拟浏览器。我认为最好的方法是使用Mechanize库。
  2. 首先,您的程序应该使用 GET 请求“登录”到“ https://accounts.google.com/Login?hl=en
  3. 之后您可以立即访问其他一些个人资源,但不能访问谷歌趋势!
  4. 经过一段时间后,您可以成功获取 CSV 格式的谷歌趋势数据。
  5. 我还没有找到确切的时间段,但它是超过 10 分钟,不到几个小时:)。这就是为什么保存您的 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
于 2013-09-15T21:13:09.980 回答
4

您可能禁用了 cookie,这让 Google 趋势认为您是机器人

于 2013-07-07T14:40:03.857 回答
3

我想我已经找到了解决问题的方法。只需确保您使用 cookie 调用 Google Trends API PREF。那就是你不需要登录谷歌帐户。当然,您不需要模拟浏览器。饼干PREF就够了。

好的。饼干PREF是从哪里来的?这很容易。只需打开浏览器,然后登录您的 Google 帐户。最后,在谷歌网站下查找cookie PREF,它就在域下www.google.com。然后将cookie的值复制PREF到您的程序或脚本中。就这样。

我已经通过这种方式在几秒钟内调用了数百次 Google Trends API。祝你好运!

于 2015-05-14T07:49:07.147 回答
-6

我在谷歌趋势中发现了这篇关于预防或只是 Zeta-Jones 效应的论文,它非常有用:G Fond、A Gamanb、E Haffenb、P Llorca。“谷歌趋势:准备好实时预防自杀还是只是 Zeta-Jones 效应?” 国际计算机网络和通信安全杂志 3,没有。1 (2015): 1-5。

于 2015-06-24T08:38:48.633 回答