如何通过python保存googlepdf文件?

2024-03-29 04:55:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 文件httpsimportpypicomdocspdfgoogle
1条回答
网友
1楼 · 发布于 2024-03-29 04:55:38

这里的正确答案是使用Google Drive API来访问文档,而不是试图编写一个像面向普通用户的web浏览器那样与googledocs对话的脚本。在

你做事的方式,谷歌认为你想查看页面。而且,由于你看起来不像一个可以原生地查看PDF的浏览器,所以创建一个HTML浏览器页面让你阅读PDF文件是件好事。这个浏览器页面有一个“下载”功能,您可以尝试解析HTML和JavaScript并触发下载,但这需要大量的工作。在

另外,我敢打赌googledrive的服务条款明确禁止编写脚本和删除web界面。在

API确实要求您创建API密钥,而且您可能还需要OAuth以正确的用户身份处理登录。但一旦你这么做了,它就和你想做的一样容易使用,而且它确实有效。您发出一个^{}请求,从该文件的ID(现有尝试中的长垃圾字符串)中获取有关该文件的信息,其中包含一个^{}字段,您只需获取该URL。像这样,在纯stdlib中:

url = 'https://www.googleapis.com/drive/v2/files/' + fileid
r = urllib2.urlopen(url)
filesinfo = json.load(r)
downloadurl = filesinfo['downloadUrl']
r2 = urllib2.urlopen(downloadurl)
data = r2.read()

当您开始添加API密钥和OAuth时,requests会让您的生活变得简单一点——例如,您只需传递{'key': API_KEY}而不是在dict上调用^{}将其添加为查询字符串。在

Google API Client Library for Python将使事情变得更简单您可以在docs页面上看到示例代码。在

相关问题 更多 >