2013-12-03 3 views
1
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 "--------------------------------" 
+2

Что вы ожидаете получить как значение 'a'? – mgilson

+0

Я вижу ошибку: print "Резюме:", f ['summary'] и все в порядке – drd0sPy

ответ

2

нет необходимости вызывать нагрузки в два раза, после того, как «данных» первый звонка, следовательно, его записи " f 'также имеют тип dict

for f in data: 
    print f['update_date'] 
    print f['summary'] 
+0

i я видел его после спасибо @guy – drd0sPy

Смежные вопросы