擅长:python、mysql、java
<p><strong>您没有存储cookies。</strong></p>
<p>首先让我说,我完全赞同使用<a href="http://docs.python-requests.org/">most-excellent ^{<cd1>} library</a>的建议。</p>
<p>但是,如果您需要在vanilla Python 2中执行此操作,那么问题在于Google正在通过HTTP 302重定向让您四处走动,它希望您记住它在每个响应中设置的cookies。当它检测到您没有存储cookies时,会将您重定向到登录页面。</p>
<p>默认情况下,<code>urllib2.urlopen</code>(或从<code>build_opener</code>返回的opener)将遵循302重定向,但它不会存储HTTP cookies。你得教你的开场白怎么做。就像这样:</p>
<pre><code>>>> from cookielib import CookieJar
>>> from urllib2 import build_opener, HTTPCookieProcessor
>>> opener = build_opener(HTTPCookieProcessor(CookieJar()))
>>> resp = opener.open('https://docs.google.com/spreadsheet/ccc?key=0ArM5yzzCw9IZdEdLWlpHT1FCcUpYQ2RjWmZYWmNwbXc&output=csv')
>>> data = resp.read()
</code></pre>
<p>如果可能的话,再次使用<code>requests</code>,但是如果不可能,标准库可以完成任务。</p>