下载谷歌趋势CSV文件(来自AWS)
每个月我都会运行一个脚本,下载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 个回答
有没有办法在不输入用户名和密码的情况下下载Google趋势数据?
有的,确实可以不登录就获取数据(我现在正在测试这个方法,效果不错,但这是个秘密,我不想失去它,所以不能分享)。
我可以告诉你,我在周末下载了大约3000到5000个文件,几乎和你做的方式一样,我每个周末都这样做。(使用2个IP,2个ID)
我能分享的唯一秘密就是不要频繁请求Google。如果你频繁请求,他们的系统会把你封掉。
我发现每隔1.5到2分钟休息一下会有帮助。
你可以这样想:一天有24小时,也就是1440分钟。如果你每2分钟下载一个文件,那一天就能下载720个文件。
而且如果你在请求之间加上随机的时间间隔,他们就无法判断是你在操作还是脚本在运行,这样也不会被封。
我只用我的Google账号每天下载2个CSV文件,这个账号是我几个月前在脚本中用过的。
如果你一周不使用这个账号,它会被重置;另外,如果你能更换IP地址,那也会有帮助。