import urllib
import json
url = "http://www.cvedetails.com/json-feed.php?numrows=10&vendor_id=0&product_id=0&version_id=0&hasexp=0&opec=0&opov=0&opcsrf=0&opfileinc=0&opgpriv=0&opsqli=0&opxss=0&opdirt=0&opmemc=0&ophttprs=0&opbyp=0&opginf=0&opdos=0&orderby=3&cvssscoremin=4"
response = urllib.urlopen(url)
data = json.loads(response.read())
for f in data:
a = json.loads(f)[u'update_date'][u'summary']
У меня есть ошибка:Ошибки при разборе в питоне
line 13, in <module>
a = json.loads(f)[u'update_date'][u'summary']
Я хочу сводку этого JSON только для примера, потому что, если я просто напечатать диафрагменный вар в течение цикла все в порядке.
{u'update_date': u'2013-11-25', u'cve_id': u'CVE-2013-6868', u'exploit_count': u'0', u'summary': u'SAP Sybase Adaptive Server Enterprise (ASE) 15.0.3 before 15.0.3 ESD#4.3, 15.5 before 15.5 ESD#5.3, and 15.7 before 15.7 SP50 or 15.7 SP100 allows local users to obtain sensitive information via unspecified vectors.', u'url': u'http://www.cvedetails.com/cve/CVE-2013-6868/', u'publish_date': u'2013-11-23', u'cvss_score': u'7.8', u'cwe_id': u'200'}
{u'update_date': u'2013-11-25', u'cve_id': u'CVE-2013-6867', u'exploit_count': u'0', u'summary': u'Unspecified vulnerability in SAP Sybase Adaptive Server Enterprise (ASE) 15.7 before 15.7 SP50 or 15.7 SP100 allows remote attackers to cause a denial of service via unspecified vectors.', u'url': u'http://www.cvedetails.com/cve/CVE-2013-6867/', u'publish_date': u'2013-11-23', u'cvss_score': u'7.1', u'cwe_id': u'0'}
{u'update_date': u'2013-11-27', u'cve_id': u'CVE-2013-6866', u'exploit_count': u'0', u'summary': u'SAP Sybase Adaptive Server Enterprise (ASE) before 15.0.3 ESD#4.3, 15.5 before 15.5 ESD#5.3, and 15.7 before 15.7 SP50 or 15.7 SP100 allows remote authenticated users to execute arbitrary code via unspecified vectors, aka CR736689.', u'url': u'http://www.cvedetails.com/cve/CVE-2013-6866/', u'publish_date': u'2013-11-23', u'cvss_score': u'9.0', u'cwe_id': u'94'}
Я чувствую, что это основная ошибка, но я не вижу недостатка.
Ну после некоторого поиска я получил ожидаемый результат, но спасибо за все быструю помощь Heres окончательного кода:
#cvedetails_parser.py
import urllib
import son
url = "http://www.cvedetails.com/json-feed.php?numrows=10&vendor_id=0&product_id=0&version_id=0&hasexp=0&opec=0&opov=0&opcsrf=0&opfileinc=0&opgpriv=0&opsqli=0&opxss=0&opdirt=0&opmemc=0&ophttprs=0&opbyp=0&opginf=0&opdos=0&orderby=3&cvssscoremin=4"
response = urllib.urlopen(url)
data = json.loads(response.read())
for f in data:
print "Update Date:", f['update_date']
print "CVE ID:", f['cve_id']
print "Number of Exploits:", f['exploit_count']
print "CVSS Score:", f['cvss_score']
print "Publish Date: ", f['publish_date']
print "Summary: ", f['summary']
print "\n"
print "--------------------------------"
print "--------------------------------"
Что вы ожидаете получить как значение 'a'? – mgilson
Я вижу ошибку: print "Резюме:", f ['summary'] и все в порядке – drd0sPy