下载谷歌趋势CSV文件(来自AWS)

1 投票
1 回答
3082 浏览
提问于 2025-04-18 00:51

每个月我都会运行一个脚本,下载Google趋势的CSV文件用于我的研究,我大约有1000个搜索词。我知道有个很常见的错误提示:“你已经达到配额限制,请稍后再试”,所以我使用了Mechanize这个Python模块来提供cookies。以下是我的调用方式:

 import mechanize # other imports omitted for simplicity 

 br = mechanize.Browser()

 cj = cookielib.LWPCookieJar()
 br.set_cookiejar(cj)

 br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

 response = br.open('https://accounts.google.com/ServiceLogin?hl=en&continue=https://www.google.com/')
 forms = mechanize.ParseResponse(response)
 form = forms[0]
 form['Email'] = username
 form['Passwd'] = password
 response = br.open(form.click())

 Result = br.open("http://www.google.com/trends/trendsReport?q=SearchTerm&export=1") 
 CSVcontent = csv.reader(StringIO(Result.read()))

在我的实际脚本中,我设置了一个睡眠时间,范围从1秒到5秒不等。

不过,使用这些方法,我一次只能下载大约350个CSV文件。即使在运行结束后,我在不同的AWS实例上重新运行脚本(不同的区域,使用相同的Google账号),我也只能下载2个搜索词,然后就达到配额限制了。

我还尝试在同一个实例上重新运行脚本,使用不同但已使用过的Google账号,但结果还是一样(只能下载2个CSV文件)。

最糟糕的是,即使过了一个月,我每天仍然只能用几个月前在脚本中使用的Google账号下载2个CSV文件。

所以我猜Google在监控用户的下载情况,不仅是通过IP地址,还通过用户账号来监控,他们会标记那些下载过多的账号。

我的问题是:

有没有人能告诉我是否有付费服务或API是没有配额限制的?

或者有没有办法绕过Google的监控(比如使用Tor或其他方法)?但即使使用Tor,我还是需要Google账号的凭证,对吧?

有没有办法在没有用户名/密码的情况下下载Google趋势的数据(这样我可以在AWS上自动扩展,因为每个IP地址至少可以下载2个CSV文件)?

任何帮助和独特的想法都将非常感谢。

1 个回答

-2

有没有办法在不输入用户名和密码的情况下下载Google趋势数据?

有的,确实可以不登录就获取数据(我现在正在测试这个方法,效果不错,但这是个秘密,我不想失去它,所以不能分享)。

我可以告诉你,我在周末下载了大约3000到5000个文件,几乎和你做的方式一样,我每个周末都这样做。(使用2个IP,2个ID)

我能分享的唯一秘密就是不要频繁请求Google。如果你频繁请求,他们的系统会把你封掉。

我发现每隔1.5到2分钟休息一下会有帮助。

你可以这样想:一天有24小时,也就是1440分钟。如果你每2分钟下载一个文件,那一天就能下载720个文件。

而且如果你在请求之间加上随机的时间间隔,他们就无法判断是你在操作还是脚本在运行,这样也不会被封。

我只用我的Google账号每天下载2个CSV文件,这个账号是我几个月前在脚本中用过的。

如果你一周不使用这个账号,它会被重置;另外,如果你能更换IP地址,那也会有帮助。

撰写回答