我正在使用此API获取公司数据:https://github.com/vkruoso/receita-tools
在这里你可以看到注册表是如何出现的(它看起来像一个json结构):https://www.receitaws.com.br/v1/cnpj/27865757000102
我可以使用以下方法下载它:
cadastro = os.system("curl -X GET https://www.receitaws.com.br/v1/cnpj/27865757000102"
如果我运行type(cadastro)
,它会向我显示class 'int'
。
我想把它变成一个数据帧。我怎么能这样做?
答案 0 :(得分:3)
os.system
返回退出代码而不是数据。您应该使用子流程,请参阅Assign output of os.system to a variable and prevent it from being displayed on the screen。
如果您使用的是python 3.5+,则应使用subprocess.run()
import subprocess
import json
import pandas as pd
proc = subprocess.run(["curl", "-X", "GET",
"https://www.receitaws.com.br/v1/cnpj/27865757000102"],
stdout=subprocess.PIPE, encoding='utf-8')
cadastro = proc.stdout
df = pd.DataFrame([json.loads(cadastro)])
否则,请使用subprocess.Popen()
import subprocess
import json
import pandas as pd
proc = subprocess.Popen(["curl", "-X", "GET",
"https://www.receitaws.com.br/v1/cnpj/27865757000102"],
stdout=subprocess.PIPE)
cadastro, err = proc.communicate()
df = pd.DataFrame([json.loads(cadastro)])
或者,您可以使用Requests library。
import json
import requests
import pandas as pd
response = requests.get("https://www.receitaws.com.br/v1/cnpj/27865757000102")
data = json.loads(response.content.decode(response.encoding))
df = pd.DataFrame([data])