首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python 3从web服务下载CSV

使用Python 3从web服务下载CSV
EN

Stack Overflow用户
提问于 2017-02-02 00:14:55
回答 2查看 3.3K关注 0票数 0

我正在尝试用Python3.5.3从web服务下载一个CSV文件。但我总是会犯错误。

示例

我有这个网址

代码语言:javascript
复制
http://www.imdb.com/list/export?list_id=watchlist&author_id=ur72234145

如果我用浏览器打开它,它就开始下载一个watchlist.csv文件。我编写了以下Phython代码:

代码语言:javascript
复制
import urllib
url = 'http://www.imdb.com/list/export?list_id=watchlist&author_id=ur72234145'
response = urllib.request.Request(url)
html = response.read()
with open('output.csv', 'wb') as f:
     f.write(html)

但我知道错误是:

追踪(最近一次调用):File "",第1行,html = response.read() AttributeError:'Request‘object没有属性'read’

怎么了?如果我对静态文件路径使用相同的代码,那么它可以工作,但它不适用于web服务。

我不认为这是一个重复的问题,因为是关于PDF和如何管理PDF,而不是关于CSV和如何下载。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-02 20:12:02

您可以使用urlretrieve

代码语言:javascript
复制
import urllib
import urllib.request

url = 'http://www.imdb.com/list/export?list_id=watchlist&author_id=ur72234145'

urllib.request.urlretrieve(url, 'output.csv')

因为您的url给了我ERROR 404,所以使用try/except更安全

代码语言:javascript
复制
import urllib
import urllib.request
import urllib.error

url = 'http://www.imdb.com/list/export?list_id=watchlist&author_id=ur72234145'

try:
    urllib.request.urlretrieve(url, 'output.csv')
except urllib.error.HTTPError as ex:
    print('Problem:', ex)
票数 2
EN

Stack Overflow用户

发布于 2017-02-02 18:10:30

我不是urllib包的常客,我倾向于使用requests,也就是人类的HTTP。但是,只有通过阅读这个关于何图urllib,我才能看到您正在尝试从Request的一个实例中获取read,这给出了您正在看到的错误。相反,您应该从一个response中读取,后者依次从获得打开一个请求的

下面的片段是我提供的链接中官方示例的一个简单修改,也就是说,我没有尝试它,它只是为了说明我的观点。我认为它应该给你一些工作上的帮助。

代码语言:javascript
复制
url = 'http://www.imdb.com/list/export'
values = {'list_id' : 'watchlist',
          'author_id' : 'ur72234145'}

data = urllib.parse.urlencode(values)
data = data.encode('ascii') # data should be bytes
req = urllib.request.Request(url, data)       # NOTE: you try to read from req
with urllib.request.urlopen(req) as response:
   the_csv = response.read()                  # NOTE: you should read from the response,
                                              # which is the result of opening req
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41992223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档