我试图从 Google 趋势中提取数据,仅尝试了 2 次就收到“您已达到每日限制”错误。
有什么办法可以解决这个问题吗?我知道 Google API 项目有特殊的配额限制,但 Google Trends 没有 API。我还读到我们可能需要向它传递一个 cookie 文件,以便看起来我已经登录了。以前有人遇到过这个问题吗?
我正在为同样的问题苦苦挣扎!
从你的问题我无法弄清楚你已经达到了什么阶段......
但这是我找到的解决方案:
- 您应该使用 cookie 来模拟浏览器。
我认为最好的方法是使用机械化图书馆。
- 首先,您的程序应该使用 GET 请求“登录”到“https://accounts.google.com/Login?hl=en"
- 之后您就可以访问其他一些个人资源,但不是谷歌趋势!
- 经过一些重要的是时候您可以成功获取 CSV 格式的 google 趋势数据了。
- 具体时间我还没查到,不过十多分钟,不到几个小时:)。这就是为什么保存 cookie 以供以后使用是个好主意!
更多提示:
如果您在 Windows 下使用 python / ruby 进行开发,请不要忘记为 OpenSSL 库设置 CA ROOT 证书包。否则 HTTPS 连接将失败,您将无法登录!看使用 Mechanize 对象获取“证书验证失败 (OpenSSL::SSL::SSLError)”错误
我建议您在程序关闭时将 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)