python - python 解析错误

标签 python parsing

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 的摘要,因为如果我只在 for 循环中打印 f var ,一切都可以。

{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'}

我觉得这是一个基本错误,但我没有看到缺陷。

经过一番搜索后,我得到了预期的结果,但感谢所有快速帮助,这是最终的代码:

#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 "--------------------------------"

最佳答案

第一次调用“data”后无需调用加载两次,因此其条目“f”也是 dict 类型

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

关于python - python 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20362779/

相关文章:

python - 在 PyQt 中,是否可以从 QTabWidget 中分离标签?

java.time.format.DateTimeParseException : Text 'Tue Dec 30 14:28:38 CET 2014' could not be parsed at index 0

c# - 如何在 AngleSharp 中只加载特定元素?

python - 如何在 Python 中获取 XML 标签值

python - 以链的形式执行列表中的函数

python - 将二进制输入流转换为文本模式

json - 在 Google Refine 中解析 JSON

c# - 将 DateTime 反序列化为 WCF SOAP 服务 C# 上的参数的异常

python - Python 中使用的 & 和竖线字符在哪里?

python - 将大量 float 转换为字符串列表的快速方法