无法正确格式化API json输出

2024-05-18 21:41:45 发布

您现在位置:Python中文网/ 问答频道 /正文

输入:

import requests
import json
apikey2 = '1234'
headers = {'API-Key':apikey2,'Content-Type':'application/json'}
data = {"url":urlz2, "visibility": "private"}
r2 = requests.post('https://urlscan.io/api/v1/scan/',headers=headers, data=json.dumps(data))
print(r2)
print(r2.json())

输出:

<Response [200]>
{'message': 'Submission successful', 'uuid': 'xxxxxxxx', 'result': 'https://urlscan.io/result/xxxxxxxxxx/', 'api': 'https://urlscan.io/api/v1/result/xxxxxxxxxxx/', 'visibility': 'private', 'options': {'useragent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xxxxxxxx Safari/xxxxxx'}, 'url': 'https://xxxxxxx.io/'}

抓取我想要的信息并在每行打印时遇到问题,如:

message: Submission successful
uuid: xxxxxxxx
result: https://urlscan.io/result/xxxxxxxxxx/
visibility: private

我尝试了一些类似于

for match in r2.json().get('message', []):
    print(f'uuid: {message.get("uuid", {}).get("uuid", "Unknown uuid")}')

但是get有一个错误,它是一个字符串


Tags: httpsioapijsonmessagedatagetuuid
1条回答
网友
1楼 · 发布于 2024-05-18 21:41:45

respons.json()方法返回一个字典。您可以迭代此字典的键和值并打印

import requests
import json
apikey2 = '1234'
headers = {'API-Key':apikey2,'Content-Type':'application/json'}
data = {"url":urlz2, "visibility": "private"}
r2 = requests.post('https://urlscan.io/api/v1/scan/',headers=headers, data=json.dumps(data))
print(r2)
dictionary = r2.json()

for key, value in dictionary.items():
    print(f"{key} = {value}")

如果要打印特定键的值,如果找不到该键,则会显示一条消息,可以使用下面的代码。这段代码迭代感兴趣的键,如果该键不在响应字典中,则可以打印消息。否则,打印键和值

keys = ["message", "uuid", "result", "visibility"]
response_dict = r2.json()
for key in keys:
    value = response_dict.get(key, None)
    if value is None:
        print(f"{key} = Unknown {key}")
    else:
        print(f"{key} = {value}")

相关问题 更多 >

    热门问题