Я пытаюсь загрузить json-файл из nist.gov в DataFrame для панд без вложенных диктов, чтобы в итоге я получил сведенные записи в DataFrame для панд.Я могу жить с вложенными списками, так как я буду складывать и объединять позже.Намерение состоит в том, чтобы получить простой файл уязвимостей уязвимыми продуктами.
import pandas as pd
pd.set_option('display.max_colwidth', 80) # set pandas column width to facilitate viewing
df = pd.read_json('https://nvd.nist.gov/feeds/json/cve/1.0/nvdcve-1.0-recent.json.zip', compression='zip') # load json file from nist
Значения в df включают в себя вложенный dict.
df.head(2)
CVE_data_type CVE_data_format CVE_data_version CVE_data_numberOfCVEs CVE_data_timestamp CVE_Items
0 CVE MITRE 4 640 2018-06-05T18:00Z {'cve': {'data_type': 'CVE', 'data_format': 'MITRE', 'data_version': '4.0', ...
1 CVE MITRE 4 640 2018-06-05T18:00Z {'cve': {'data_type': 'CVE', 'data_format': 'MITRE', 'data_version': '4.0', ...
Когда я раскрываю df.CVE_Items вCVE_Items DataFrame, я получаю больше вложенных диктов.
CVE_items = df.CVE_Items.apply(pd.Series)
CVE_items.head(2)
cve configurations impact publishedDate lastModifiedDate
0 {'data_type': 'CVE', 'data_format': 'MITRE', 'data_version': '4.0', 'CVE_dat... {'CVE_data_version': '4.0', 'nodes': [{'operator': 'OR', 'cpe': [{'vulnerabl... {'baseMetricV2': {'cvssV2': {'version': '2.0', 'vectorString': '(AV:N/AC:M/A... 2011-12-27T11:55Z 2018-06-04T13:46Z
1 {'data_type': 'CVE', 'data_format': 'MITRE', 'data_version': '4.0', 'CVE_dat... {'CVE_data_version': '4.0', 'nodes': [{'operator': 'OR', 'cpe': [{'vulnerabl... {'baseMetricV3': {'cvssV3': {'version': '3.0', 'vectorString': 'CVSS:3.0/AV:... 2018-04-24T20:29Z 2018-06-04T16:11Z
Если я продолжу расширять вновь сформированные DataFrames, график сгущается, когда я получаю больше вложенных диктов и / или списков с вложенными диктовками.
cve = CVE_items.cve.apply(pd.Series)
configurations = CVE_items.configurations.apply(pd.Series)
impact = CVE_items.impact.apply(pd.Series)
cve.head(2)
data_type data_format data_version CVE_data_meta affects problemtype references description
0 CVE MITRE 4.0 {'ID': 'CVE-2011-3841', 'ASSIGNER': 'cve@mitre.org'} {'vendor': {'vendor_data': [{'vendor_name': 'wpsymposiumpro', 'product': {'p... {'problemtype_data': [{'description': [{'lang': 'en', 'value': 'CWE-79'}]}]} {'reference_data': [{'url': 'http://secunia.com/advisories/47243', 'name': '... {'description_data': [{'lang': 'en', 'value': 'Cross-site scripting (XSS) vu...
1 CVE MITRE 4.0 {'ID': 'CVE-2013-3947', 'ASSIGNER': 'cve@mitre.org'} {'vendor': {'vendor_data': [{'vendor_name': 'ahnlab', 'product': {'product_d... {'problemtype_data': [{'description': [{'lang': 'en', 'value': 'CWE-119'}, {... {'reference_data': [{'url': 'http://secunia.com/advisories/54465', 'name': '... {'description_data': [{'lang': 'en', 'value': 'Buffer overflow in MedCoreD.s...
Есть идеи, как мне распаковать этот файл?