使用 zip 文件从 URL 中提取数据时出现属性错误
Attribute Error when extracting data from a URL with a zip file
我正在尝试访问 this page 上可用的 "Yield Curve Data"。它有一个单选按钮,单击 "Submit" 会生成一个 zip 文件,我希望从中获取数据。我希望从 "Retrieve all data" 选项中获取数据。我的代码如下,但是,我在行 zipfile = ZipFile(StringIO(request.read()))
中收到错误 AttributeError: read
,我不知道如何解决这个问题。
import urllib, urllib2
import csv
from StringIO import StringIO
import pandas as pd
import os
from zipfile import ZipFile
my_url = 'http://www.bankofcanada.ca/rates/interest-rates/bond-yield-curves/'
data = urllib.urlencode({'lastchange': 'all'})
request = urllib2.Request(my_url, data)
result = urllib2.urlopen(request)
zipfile = ZipFile(StringIO(request.read()))
谢谢
根据 urllib2 文档,urllib2.Request
对象没有 read
函数。您应该改为尝试 - result.read()
,如下所示 -
zipfile = ZipFile(StringIO(result.read()))
破译链接 webpage 的 html 来源后,以下似乎有效 — 至少就我而言:
import urllib, urllib2
import csv
from StringIO import StringIO
import pandas as pd
import os
from zipfile import ZipFile
from pprint import pprint, pformat
my_url = 'http://www.bankofcanada.ca/stats/results/csv'
data = urllib.urlencode({"lookupPage": "lookup_yield_curve.php",
"startRange": "1986-01-01",
"searchRange": "all"})
request = urllib2.Request(my_url, data)
result = urllib2.urlopen(request)
zipdata = result.read()
zipfile = ZipFile(StringIO(zipdata))
print 'zipfile.namelist(): {}'.format(zipfile.namelist())
输出:
zipfile.namelist(): ['yield_curves.csv']
我正在尝试访问 this page 上可用的 "Yield Curve Data"。它有一个单选按钮,单击 "Submit" 会生成一个 zip 文件,我希望从中获取数据。我希望从 "Retrieve all data" 选项中获取数据。我的代码如下,但是,我在行 zipfile = ZipFile(StringIO(request.read()))
中收到错误 AttributeError: read
,我不知道如何解决这个问题。
import urllib, urllib2
import csv
from StringIO import StringIO
import pandas as pd
import os
from zipfile import ZipFile
my_url = 'http://www.bankofcanada.ca/rates/interest-rates/bond-yield-curves/'
data = urllib.urlencode({'lastchange': 'all'})
request = urllib2.Request(my_url, data)
result = urllib2.urlopen(request)
zipfile = ZipFile(StringIO(request.read()))
谢谢
根据 urllib2 文档,urllib2.Request
对象没有 read
函数。您应该改为尝试 - result.read()
,如下所示 -
zipfile = ZipFile(StringIO(result.read()))
破译链接 webpage 的 html 来源后,以下似乎有效 — 至少就我而言:
import urllib, urllib2
import csv
from StringIO import StringIO
import pandas as pd
import os
from zipfile import ZipFile
from pprint import pprint, pformat
my_url = 'http://www.bankofcanada.ca/stats/results/csv'
data = urllib.urlencode({"lookupPage": "lookup_yield_curve.php",
"startRange": "1986-01-01",
"searchRange": "all"})
request = urllib2.Request(my_url, data)
result = urllib2.urlopen(request)
zipdata = result.read()
zipfile = ZipFile(StringIO(zipdata))
print 'zipfile.namelist(): {}'.format(zipfile.namelist())
输出:
zipfile.namelist(): ['yield_curves.csv']