使用requests.get

时间:2016-09-20 14:36:34

标签: python csv download python-requests

我正在使用requests.get下载csv文件。我只需要这个csv文件中的两列,而列的其余部分对我来说都是无用的。目前我正在使用

r = requests.get(finalurl, verify=False,stream=True)
shutil.copyfileobj(r.raw, csvfile) 

获取完整的csv文件。

但是,我只想从csv文件中下载两列。我总是可以下载整个内容,然后采取必要的措施。

只需检查是否有办法使用requests.get获取特定列 例如:http://chart.finance.yahoo.com/table.csv?s=AAPL&a=7&b=20&c=2016&d=8&e=20&f=2016&g=d&ignore=.csv

我只需要来自此csv文件的dateAdj.close

无法找到类似的问题,如果之前提出类似的问题,请指导我。

由于

3 个答案:

答案 0 :(得分:2)

尝试pandas,在您的情况下,大熊猫更方便。

In [2]: import pandas.io.data as web
   ...: aapl = web.DataReader("AAPL", 'yahoo','2016-7-20','2016-8-20')
   ...: aapl['Adj Close']
   ...:
   ...:
Out[2]:
Date
2016-07-20     99.421412
2016-07-21     98.894269
2016-07-22     98.128421
2016-07-25     96.815526
2016-07-26     96.149138
2016-07-27    102.395300
2016-07-28    103.777810
2016-07-29    103.648513
2016-08-01    105.478603
2016-08-02    103.917063
2016-08-03    105.220002
2016-08-04    105.870003
2016-08-05    107.480003
2016-08-08    108.370003
2016-08-09    108.809998
2016-08-10    108.000000
2016-08-11    107.930000
2016-08-12    108.180000
2016-08-15    109.480003
2016-08-16    109.379997
2016-08-17    109.220001
2016-08-18    109.080002
2016-08-19    109.360001
Name: Adj Close, dtype: float64

答案 1 :(得分:1)

您可以使用Numpy和Loadtext:

import numpy as np 
b=np.loadtxt(r'name.csv',dtype=str,delimiter=',',skiprows=1,usecols=(0,1,2))

这将创建一个数组,其中只包含您选择的列的数据。

答案 2 :(得分:0)

您不能只下载某些列,您可以使用常规财务API。您不必一次性下载所有数据,然后替换之后,您可以随时解析:

import csv

final_url = "http://chart.finance.yahoo.com/table.csv?s=AAPL&a=7&b=20&c=2016&d=8&e=20&f=2016&g=d&ignore=.csv"
with open("out.csv", "w") as out:
    writer = csv.writer(out)
    data = requests.get(final_url, verify=False, stream=True).iter_lines()
    headers = fieldnames = next(data).split(",")
    reader = csv.DictReader(data, fieldnames=headers)
    writer.writerow(["Date", "Adj Close"])
    for row in reader:
        writer.writerow([row["Date"], row["Adj Close"]])

您可以直接索引列顺序是否保证永不更改,但使用 DictReader 可让您按键访问,因此顺序无关紧要。我认为假设数据中没有任何换行符也是安全的。