我正在尝试计算扫描检测到文件为假的次数。我尝试查看诸如Looking for a specific value in JSON file之类的链接,但并没有解决我的问题。此外,我还没有使用API太多,因此将不胜感激任何帮助。
这是我到目前为止所拥有的。
# Making the API call
url = 'https://www.virustotal.com/vtapi/v2/file/report'
params = {'apikey': api_key, 'resource': sha1_num}
response = requests.get(url, params=params)
allJson = response.json()
data = json.dumps(allJson)
count = 0
item_dict = json.loads(data)
print len(item_dict['scans']
for entry in data['scans']:
if entry['detected'] == 'false':
count += 1
print (count)
而且,这是sublime.exe的结果对病毒总数的影响
{
"scans": {
"Bkav": {
"detected": false,
"version": "1.3.0.9466",
"result": null,
"update": "20180619"
},
"MicroWorld-eScan": {
"detected": false,
"version": "14.0.297.0",
"result": null,
"update": "20180619"
},
"CMC": {
"detected": false,
"version": "1.1.0.977",
"result": null,
"update": "20180619"
},
"CAT-QuickHeal": {
"detected": false,
"version": "14.00",
"result": null,
"update": "20180619"
},
"ALYac": {
"detected": false,
"version": "1.1.1.5",
"result": null,
"update": "20180619"
},
答案 0 :(得分:0)
我非常确定此循环:for entry in data['scans']:
不会做您想要的事情。您要迭代的data['scans']
是一本字典,当您在字典上进行迭代时,您会得到它的键(它们是数据中不同测试的名称,看起来像)。您的代码希望获得字典而不是键串,因此无法正常工作。
尝试使用for entry in data['scans'].values():
遍历字典的值。您可能还想测试布尔值False
,而不是字符串'false'
,因为Python的json
解析器将为您转换它(您可以进行if not entry['detected']:
)。