繁体   English   中英

尝试使用CSV文件从URL下载数据

[英]Trying to download data from URL with CSV File

我是Python的新手,并且有一个问题,为什么以下代码不会在csv文件中产生任何输出。 代码如下:

import csv
import urllib2

url = 'http://www.rba.gov.au/statistics/tables/csv/f17-yields.csv'
response = urllib2.urlopen(url)
cr = csv.reader(response)

for row in cr:
    with open("AusCentralbank.csv", "wb") as f:
        writer = csv.writer(f)
        writer.writerows(row)

干杯。

编辑

布里恩和艾伯特解决了我的初始问题。 但是,我现在还有一个问题。 当我在零息票“利率 - 分析系列 - 2009年至今”下载上面列出的“ http://www.rba.gov.au/statistics/tables/#interest-rates ”中的CSV文件时 - F17“并且是F-17 Yields CSV我看到它有5个工作簿,我实际上只想收集第5工作簿中的数据。 有没有办法可以做到这一点? 干杯。

我只能使用Python 3测试我的代码。但是,唯一的差异应该是urllib2 ,因此我使用urllib.respose来打开所需的url。

变量htmlbytes类型,通常可以以二进制模式写入文件。 另外,你的源代码已经是一个csv文件了,所以不需要以某种方式转换它:

#!/usr/bin/env python3
# coding: utf-8

import urllib

url = 'http://www.rba.gov.au/statistics/tables/csv/f17-yields.csv'

response = urllib.request.urlopen(url)
html = response.read()

with open('output.csv', 'wb') as f:
        f.write(html)

这可能是因为你的开放模式。

根据文件

'w'仅用于写入(将擦除具有相同名称的现有文件)

您应该使用append( a )模式将其附加到文件的末尾。

'a'打开文件进行追加; 写入文件的任何数据都会自动添加到最后。

此外,由于您尝试下载的文件是csv文件,因此您无需转换它。

@albert有一个很好的答案。 我已经将它转换为等效的Python 2.x代码。 你在原来的程序中做了太多的工作; 由于该文件已经是csv,因此您无需进行任何特殊工作即可将其转换为csv。

import urllib2

url = 'http://www.rba.gov.au/statistics/tables/csv/f17-yields.csv'

response = urllib2.urlopen(url)
html = response.read()

with open('AusCentralbank.csv', 'wb') as f:
    f.write(html)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM