简体   繁体   中英

Python script dow download JSON data and save as/convert to CSV

I am having trouble downloading data in a JSON format and converting it to a csv-file. In this case it is company overview data from alphavantage( https://www.alphavantage.co/query?function=OVERVIEW&symbol=IBM&apikey=demo )

I can download the data with the following script:

import requests
import pathlib

solditems = requests.get('https://www.alphavantage.co/query?function=OVERVIEW&symbol=IBM&apikey=demo') # (your url)
pathlib.Path('data2.json').write_bytes(solditems.content)

Then I have to data on my local drive in the json format. But then I try to convert to JSON into a CSV and so far different methods have failed for me. I tried this method with pandas ( https://datatofish.com/json-string-to-csv-python/ ) or this one ( https://medium.com/@gabrielpires/how-to-convert-a-json-file-to-csv-python-script-a9ff0a3f906e ) but I cant get any method to work. What would be the best way? I want a CSV-File with 2 lines. In the first line would be the keys like Symbol, Name, Decritpion etc and in the second line the values.

I just need a basic script to download JSON data and convert it to a CSV file. So I can parametrize it and build a loop around this process. But I am stuck

Pandas does have a json_normalize method to do that. Or, the other option is you can construct the dataframe from json (dictionaries) as long as each dictionary is within a list, where each row in your table is represented by each element in the list.

Also note, you can use .json() on the request to store right away. No need to write to file localay and then convert to csv.

import requests
import pandas as pd

solditems = requests.get('https://www.alphavantage.co/query?function=OVERVIEW&symbol=IBM&apikey=demo').json() # (your url)

df = pd.json_normalize(solditems)
df.to_csv('data.csv', index=False) 

Or with the single dictionary:

df = pd.DataFrame([solditems])

Output:

print(df)
  Symbol     AssetType  ... LastSplitFactor LastSplitDate
0    IBM  Common Stock  ...             2:1    1999-05-27

[1 rows x 60 columns]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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