Обработка ошибок при поиске в Shodan API

Я пытаюсь написать скрипт Python, который будет искать API Shodan и возвращать идентификатор, CVE и описание. Поскольку некоторые из моих результатов поиска (например, «java») не имеют установленного CVE (или ключа CVE), мой сценарий задыхается. Я знаю, что мне нужно обернуть поиск в обработку ошибок try/except, но мне не повезло с тем, что я смог найти в Интернете. Вот ошибка, которую я получаю, и ниже приведен код. Большое спасибо заранее.

--------Ошибка-------

    print '%s: %s: %s' % (exploit['id'], exploit['cve'], exploit['description'])
KeyError: 'cve

-------- Мой код -------

from shodan import WebAPI
api = WebAPI("my shodan key")

user_selection = raw_input("Enter something: ")
print "searching for", (user_selection),"....."

results = api.exploitdb.search(user_selection)

for exploit in results['matches']:
    print '%s: %s: %s' % (exploit['id'], exploit['cve'], exploit['description'])

person user2145207    schedule 07.03.2013    source источник


Ответы (1)


Похоже, вы хотите использовать dict.get и предоставить ему значение по умолчанию, которое будет возвращено, если ключ не существует:

print '%s: %s: %s' % (exploit.get('id', '[blank]'), exploit.get('cve', '[blank]'), exploit.get('description', '[blank]'))
person Jon Clements♦    schedule 07.03.2013