如何将原始 json 从 url 转换为 json 或 csv?

How to convert raw json from a url to json or csv?

我有一个 URL 为我提供基于 json 的原始数据,我在将该原始文本导入为 json 文件时遇到了一些问题,甚至无法转换它到 csv。

我尝试使用 urllib3 和 BeautifulSoup 导入该数据,并将其存储为 soup 对象。我无法做的是将该数据存储为 json 和 csv(我都需要)。

我认为导致此问题的一个原因是页面顶部有一行描述返回的结果,但在技术上不是 json 数据的一部分:

顶部可能导致问题的代码:

{
"response":{"numFound":1161,"start":0,"docs":[
  {
    "applicationType":"UTILITY",
    "documentId":"US10010749B2",
    "applicationNumber":"US14422067", 

我正在使用的库:

import urllib3
from bs4 import BeautifulSoup
import json

一些代码:

url = "https://developer.uspto.gov/ibd-api/v1/patent/application?assignee=alexander&start=0&rows=5"
http = urllib3.PoolManager()
response = http.request('GET', url)
soup = BeautifulSoup(response.data, "html.parser")

print(soup)

json_data = json.load(url)
print(json_data)

AttributeError: 'str' object has no attribute 'read'

我的最终目标是能够 "organize and download" 来自 url 的所有数据并将它们存储在 json 和 csv 格式中。

您似乎弄错了如何使用 json.load 加载 JSON。一个简单的修复如下所示。

if response.code == 200:
     json_data = json.load(response.data)
     print(json_data)

此returns字典格式的数据。然后您可以将其转换为 CSV 文件。这是一些示例代码:

with open('test.csv', 'w') as f:
for key in json_data.keys():
    f.write("%s,%s\n"%(key, json_data[key]))

首先,您的代码大部分是正确的:

import urllib3
from bs4 import BeautifulSoup
import json
import pandas as pd

url = "https://developer.uspto.gov/ibd-api/v1/patent/application?assignee=alexander&start=0&rows=5"
http = urllib3.PoolManager()
response = http.request('GET', url)
soup = BeautifulSoup(response.data, "html.parser")

json_data = json.loads(soup.text)
print(json_data)

拥有正确的 json 数据,您可以将其导入熊猫数据框,然后将其导出到 csv:

df = pd.DataFrame(json_data['response']['docs'])
df.to_csv('my_csv.csv', index=False)

编辑

添加了导出到 csv 的代码