首页 > 解决方案 > 如何将原始 json 从 url 转换为 json 或 csv?

问题描述

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

我尝试使用 urllib3 和 BeautifulSoup 导入该数据,并将其存储为汤对象。我不能做的是将该数据存储为 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'

我的最终目标是能够“组织和下载”来自 url 的所有数据,并将它们存储为 json 和 csv 格式。

标签: jsonpython-3.xcsvbeautifulsoupurllib3

解决方案


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

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 数据,您可以将其导入 panda 数据框,然后将其导出为 csv:

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

编辑

添加了用于导出到 csv 的代码


推荐阅读