requests
库可以完美地从googledocs(从How do you save a Google Sheets file as CSV from Python 3 (or 2)?)检索csv或txt文件
但是当我试图在googledoc中对pdf文件做同样的处理时,我只得到了HTML文件,有没有办法让我从googledoc下载pdf文件呢?e、 g.https://docs.google.com/file/d/0BxcsLDhZbUBBMWY1MzRkZGQtMjQxNC00NzQ3LWFmNzEtNzNmMzYzYmU2MDRj/edit
我试过使用requester
得到了这个:
>>> import requests # https://pypi.python.org/pypi/requests
>>> gdoc = 'https://docs.google.com/file/d/0BxcsLDhZbUBBMWY1MzRkZGQtMjQxNC00NzQ3LWFmNzEtNzNmMzYzYmU2MDRj/edit'
>>> print requests.get(gdoc).text
输出:
^{pr2}$我尝试过使用urllib
,我得到了:
>>> import urllib, codecs
>>> urllib.urlretrieve('https://docs.google.com/file/d/0BxcsLDhZbUBBMWY1MzRkZGQtMjQxNC00NzQ3LWFmNzEtNzNmMzYzYmU2MDRj/edit')
('/tmp/tmpQ5tDwR', <httplib.HTTPMessage instance at 0x16fbbd8>)
>>> codecs.open('/tmp/tmpQ5tDwR','r').read()
我得到了这个输出:http://pastebin.com/D2FM1VMU
这里的正确答案是使用Google Drive API来访问文档,而不是试图编写一个像面向普通用户的web浏览器那样与googledocs对话的脚本。在
你做事的方式,谷歌认为你想查看页面。而且,由于你看起来不像一个可以原生地查看PDF的浏览器,所以创建一个HTML浏览器页面让你阅读PDF文件是件好事。这个浏览器页面有一个“下载”功能,您可以尝试解析HTML和JavaScript并触发下载,但这需要大量的工作。在
另外,我敢打赌googledrive的服务条款明确禁止编写脚本和删除web界面。在
API确实要求您创建API密钥,而且您可能还需要OAuth以正确的用户身份处理登录。但一旦你这么做了,它就和你想做的一样容易使用,而且它确实有效。您发出一个^{} 请求,从该文件的ID(现有尝试中的长垃圾字符串)中获取有关该文件的信息,其中包含一个^{} 字段,您只需获取该URL。像这样,在纯stdlib中:
当您开始添加API密钥和OAuth时,} 将其添加为查询字符串。在
requests
会让您的生活变得简单一点——例如,您只需传递{'key': API_KEY}
而不是在dict上调用^{Google API Client Library for Python将使事情变得更简单您可以在docs页面上看到示例代码。在
相关问题 更多 >
编程相关推荐