我正在努力编写一个python脚本,自动抓取包含我所有谷歌日历的zip失败并将其存储(作为备份)在我的硬盘上。
我正在使用ClientLogin获取身份验证令牌(并且可以成功获取令牌)。
很遗憾,我无法在https://www.google.com/calendar/exporticalzip
检索该文件它总是通过将登录页面返回为html(而不是zip)来再次询问我的登录凭据。
这是关键代码:
post_data = post_data = urllib.urlencode({ 'auth': token, 'continue': zip_url})
request = urllib2.Request('https://www.google.com/calendar', post_data, header)
try:
f = urllib2.urlopen(request)
result = f.read()
except:
print "Error"
之前有任何想法或做过的人吗?或者另一个想法如何备份我的所有日历(自动!)
答案 0 :(得分:5)
您可以使用mechanize编写一个脚本,以便在从首选网址下载日历之前浏览Google登录流程。
请尝试:
import mechanize
br=mechanize.Browser()
br.open('https://www.google.com/calendar/exporticalzip')
br.select_form(nr=0)
br['Email']='Username@gmail.com'
br['Passwd']='Password'
br.submit()
br.retrieve('https://www.google.com/calendar/exporticalzip','exportical.zip')
它对我有用,我成功下载了我的压缩日历。
答案 1 :(得分:0)
日历有一个网址,允许您无需身份验证即可下载(请参阅Google日历的用户界面,日历设置,私有网址下)。您应该可以使用urllib
轻松下载iCal或XML文件。
答案 2 :(得分:0)
伟大的解决方案systempuntoout! 对于那些使用Google Apps的人,只需要对网址和电子邮件进行调整。
import mechanize
br=mechanize.Browser()
br.open('https://www.google.com/calendar/hosted/yourdomain.com/exporticalzip')
br.select_form(nr=0)
br['Email']='Username'
br['Passwd']='Password'
br.submit()
br.retrieve('https://www.google.com/calendar/hosted/yourdomain.com/exporticalzip','exportical.zip')