リクエストのあるリンクからcsvファイルをダウンロードし、MSFT.csv
として保存したい。しかし、私のコードはエラーを返します
ファイル "<stdin>"、1行目、_csv.Error:引用符で囲まれていないフィールドに改行文字が表示されています-ユニバーサル改行モードでファイルを開く必要がありますか?
import requests
import csv
data=requests.get('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&apikey=demo&datatype=csv'
cr = csv.reader(data)
for row in cr:
print row
MSFT.csv
で保存するにはどうすればよいですか?
このデータをCSVファイルに書き込もうとしている場合は、最初にrequests.get
を使用してデータをダウンロードしてから、各行をCSVファイルに保存できます。
import csv
import requests
url = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&apikey=demo&datatype=csv'
response = requests.get(url)
with open('out.csv', 'w') as f:
writer = csv.writer(f)
for line in response.iter_lines():
writer.writerow(line.decode('utf-8').split(','))
または、pandasがインストールされている場合(pip install --user pandas
)の場合、URLを直接渡すことでデータをロードできます。
import pandas as pd
df = pd.read_csv(url)
df.head()
timestamp open high low close adjusted_close volume dividend_amount split_coefficient
0 2019-06-19 135.00 135.93 133.81 135.69 135.69 17946556 0.0 1.0
1 2019-06-18 134.19 135.24 133.57 135.16 135.16 25908534 0.0 1.0
2 2019-06-17 132.63 133.73 132.53 132.85 132.85 14517785 0.0 1.0
3 2019-06-14 132.26 133.79 131.64 132.45 132.45 17821703 0.0 1.0
4 2019-06-13 131.98 132.67 131.56 132.32 132.32 17200848 0.0 1.0
df.to_csv('out.csv')
あなたは要求を介してそれを達成することができます
import os
import requests
def download_file(url, filename):
''' Downloads file from the url and save it as filename '''
# check if file already exists
if not os.path.isfile(filename):
print('Downloading File')
response = requests.get(url)
# Check if the response is ok (200)
if response.status_code == 200:
# Open file and write the content
with open(filename, 'wb') as file:
# A chunk of 128 bytes
for chunk in response:
file.write(chunk)
else:
print('File exists')
必要なURLとファイル名で関数を呼び出すことができます。あなたの場合は次のようになります:
url = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&apikey=demo&datatype=csv'
filename = 'MSFT.csv'
download_file(url, filename)
お役に立てれば。
より簡単な方法があります。
import urllib.request
csv_url = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&apikey=demo&datatype=csv'
urllib.request.urlretrieve(csv_url, 'MSFT.csv')