如何将原始 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 的代码
我有一个 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 的代码