Files
route_fileter/cveorg_checker.py

30 lines
933 B
Python
Raw Permalink Normal View History

2024-01-03 13:20:15 +08:00
import requests
import json
import pandas as pd
from rprint import *
from lxml import etree
search_url = "https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword={keyword}"
detail_url = "https://cve.mitre.org/cgi-bin/cvename.cgi?name={cve}"
def get_cve_json(keyword: str) -> dict:
header = ["CVE","Detail"]
url = search_url.format(keyword=keyword)
r =requests.get(url)
if r.status_code == 200:
html_tree = etree.HTML(r.text)
table_html = html_tree.xpath('//*[@id="TableWithRules"]/table')[0]
table_html = etree.tostring(table_html, pretty_print=True, encoding='unicode')
df_list = pd.read_html(table_html)
df = df_list[0]
table_data = df.values.tolist()
table_data.insert(0,header)
ret = [dict(zip(header, row)) for row in table_data[1:]]
return ret
else:
return {}
if __name__ == "__main__":
banner()
print(get_cve_json("AC6"))