目标
从国家信息安全漏洞库(CNNVD)中爬取目标软件的相关漏洞,统计漏洞类型、危害等级、相关数量等,并进行可视化。
具体流程
- 构造URL,根据关键词(如glibc)爬取相关软件的漏洞信息,统计其数量和网页数
- 构造URL,一个一个网页的爬取,找到每个具体漏洞的链接,保存这些链接
- 根据每个具体漏洞的链接,爬取相关页面,用正则表达式和BeautifulSoup找到我们需要的链接。
代码实现
- 爬取网页并保存到EXCEL文件中
# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
import traceback
import re
import xlwt
list=['glibc','Microsoft Office Word','Microsoft Internet Explorer']#想要查询的相关漏洞
num=[] # 存放每个实体对应的漏洞数目
page=[]# 存放每个实体对应的漏洞的页数
# 根据url爬取网页
def getHTMLTEXT(url,code="utf-8"):
kv = {
'user-agent': 'Mozilla/5.0'} # 模拟浏览器访问网站
try:
r=requests.get(url,headers=kv,timeout=30)
r.raise_for_status()
r.encoding=code
return r.text
except:
traceback.print_exc()
return ""
# 初始网页
def parsepage(name,url):
type={}# 存放每个实体中的漏洞类型
html=getHTMLTEXT(url)
soup=BeautifulSoup(html,'html.parser')
#每个类型的数量
#text=soup.find_all('a',text=re.compile('总条数:'))