以编程方式备份​​Google日历:https://www.google.com/calendar/exporticalzip

时间:2010-03-26 14:36:30

标签: python authentication calendar

我正在努力编写一个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"

之前有任何想法或做过的人吗?或者另一个想法如何备份我的所有日​​历(自动!)

3 个答案:

答案 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')