这几天要爬cnnvd漏洞库
网上找了半天发现各种代码不是跑不了就不好用
于是本菜鸡自己写了一个
先上效果
我是按页爬的
一页目录10条漏洞
一次爬1000页一万条
一共大概128900条
表里面的内容
不是多线程(不会),至于速度,每一万条在半小时左右
我每次开`6个程序爬,大概一个小时爬完的,,,
源代码就贴在这里了(虽然想要积分)
然后爬好的xls在这里,不想花时间爬的可以直接下
python代码和爬好的xls
# -*- coding:utf-8 -*-
import sys
#print (u'系统默认编码为',sys.getdefaultencoding())
default_encoding = 'utf-8' #重新设置编码方式为uft-8
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
#print (u'系统默认编码为',sys.getdefaultencoding())
import requests
from bs4 import BeautifulSoup
import traceback
import re
import xlwt
def getURLDATA(url):
#url = 'http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201901-1014'
header={
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36',
'Connection': 'keep-alive',}
r=requests.get(url,headers=header,timeout=30)
#r.raise_for_status()抛出异常
html = BeautifulSoup(r.content.decode(),'html.parser')
link=html.find(class_='detail_xq w770')#漏洞信息详情
link_introduce=html.find(class_='d_ldjj')#漏洞简介
link_others=html.find_all(class_='d_ldjj m_t_20')#其他
#print(len(link_introduce))
try:
#print ("危害等级:"+link.contents[3].contents[3].find('a').text.lstrip().rstrip())#危害等级
list4.append(str(link.contents[3].contents[3].find('a').text.lstrip().rstrip()))
except:
#print("危害等级:is empty")
list4.append("")
try:
#print ("CVE编号:"+link.contents[3].contents[5].find('a').text.lstrip().rstrip())#CVE编号
list5.append(str(link.contents[3].contents[5].find('a').text.lstrip().rstrip()))
except:
#print("CVE编号:is empty")
list5.append("")
try:
#print ("漏洞类型:"+link.contents[3].contents[7].find('a').text.lstrip().rstrip())#漏洞类型
list6.append(str(link.contents[3].contents[7].find