首页 > 解决方案 > 将特定的 Json 数据抓取到 csv

问题描述

我正在尝试抓取一些 json 数据。前几行 ae 如下,后面的所有行都采用相同的格式。json数据:

{
  "data": [
    {
      "date": "2011-10-07",
      "f(avg(output_total)/number(100000000))": 50
    },
    {
      "date": "2011-10-08",
      "f(avg(output_total)/number(100000000))": 50
    },
    {
      "date": "2011-10-12",
      "f(avg(output_total)/number(100000000))": 50
    },
    {
      "date": "2011-10-13",
      "f(avg(output_total)/number(100000000))": 54.0515120216902
    },.......]

我愿意将日期及其相关值(如 fi= 或以上、2011-10-07 和 50、2011-10-08 和 50 等)刮到一个包含两列(日期和值)的 csv 文件中

我该如何进行?python可以吗?

这就是我获取 json 数据的方式:

import os
import requests

url='https://api.blockchair.com/litecoin/transactions?a=date,f(avg(output_total)/number(100000000))'

proxies = {}
response = requests.get(url=url, proxies=proxies)
print(response.content)

标签: pythonjsonscrape

解决方案


如果您只想要一个 CSV 文件而不依赖任何其他 Python 模块(例如 pandas),那么它非常简单:

import requests
CSV = 'blockchair.csv'
url='https://api.blockchair.com/litecoin/transactions?a=date,f(avg(output_total)/number(100000000))'
with requests.Session() as session:
    response = session.get(url)
    response.raise_for_status()
    with open(CSV, 'w') as csv:
        csv.write('Date,Value\n')
        for d in response.json()['data']:
            for i, v in enumerate(d.values()):
                if i > 0:
                    csv.write(',')
                csv.write(str(v))
            csv.write('\n')

推荐阅读