簡體   English   中英

來自谷歌開發者工具的 JSON 鏈接在 Python(或瀏覽器)中不起作用

[英]JSON link from google developer tools not working in Python (or in browser)

我正在嘗試提取表中的數據https://www.ecoregistry.io/emit-certifications/ra/10

使用 google developer tools.network 選項卡,我可以獲得存儲此表數據的 json 鏈接: https://api-front.ecoregistry.io/api/project/10/emitcertifications

我可以手動復制這個 json 數據並使用我編寫的這段代碼提取信息:

import json
import pandas as pd
data = '''PASTE JSON DATA HERE'''
info = json.loads(data)
columns = ['# Certificate', 'Carbon offsets destination', 'Final user', 'Taxpayer subject','Date','Tons delivered']
dat = list()
for x in info['emitcertifications']:
dat.append([x['consecutive'],x['reasonUsingCarbonOffsets'],x['userEnd'],x['passiveSubject'],x['date'],x['quantity']])
df = pd.DataFrame(dat,columns=columns)
df.to_csv('Data.csv')

我想自動化它,以便我可以從 json 鏈接中提取數據: https://api-front.ecoregistry.io/api/project/10/emitcertifications直接而不是手動粘貼 json 數據:

data = '''PASTE JSON DATA HERE'''

該鏈接在 python 中甚至直接在瀏覽器中都不起作用:

import requests
import json
url = ('https://api-front.ecoregistry.io/api/project/10/emitcertifications')
response = requests.get(url)
print(json.dumps(info, indent=4))

我得到的錯誤 output 是:{'status': 0, 'codeMessages': [{'codeMessage': 'ERROR_401', 'param': 'invalid', 'message': 'No autorizado'}]}

當我從開發人員工具下載數據時,這本字典有 'status':1 之后所有數據都在那里。

編輯:我嘗試將請求標頭添加到 url 但它仍然不起作用:

import requests
import json
url = ('https://api-front.ecoregistry.io/api/project/10/emitcertifications')
hdrs = {"accept": "application/json","accept-language": "en-IN,en;q=0.9,hi-IN;q=0.8,hi;q=0.7,en-GB;q=0.6,en-US;q=0.5","authorization": "Bearer null", "content-type": "application/json","if-none-match": "W/\"1326f-t9xxnBEIbEANJdito3ai64aPjqA\"", "lng": "en", "platform": "ecoregistry","sec-ch-ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"100\", \"Google Chrome\";v=\"100\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "empty","sec-fetch-mode": "cors", "sec-fetch-site": "same-site" }
response = requests.get(url, headers = hdrs)
print(response)
info = response.json()
print(json.dumps(info, indent=4))

print(response) 給出 output 作為 '<Response [304]>' 而 info = response.json() 給出回溯錯誤 'Expecting value: line 1 column 1 (char 0)'

有人可以指出我正確的方向嗎?

提前致謝!

發表評論作為答案:

為了檢索數據,api 所需的標頭是平台:ecoregistry。

import requests as req
import json
req = req.get('https://api-front.ecoregistry.io/api/project/10/emitcertifications', headers={'platform': 'ecoregistry'})
data = json.loads(data)
print(data.keys())
# dict_keys(['status', 'projectSerialYear', 'yearValidation', 'project', 'emitcertifications'])
print(data['emitcertifications'][0].keys())
# dict_keys(['id', 'auth', 'operation', 'typeRemoval', 'consecutive', 'serialInit', 'serialEnd', 'serial', 'passiveSubject', 'passiveSubjectNit', 'isPublicEndUser', 'isAccept', 'isCanceled', 'isCancelProccess', 'isUpdated', 'isKg', 'reasonUsingCarbonOffsetsId', 'reasonUsingCarbonOffsets', 'quantity', 'date', 'nitEnd', 'userEnd'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM