利用python监控CNNVD上面的新出漏洞实例,可以配合邮箱推送获取最新的漏洞情报

爬取cnnvd

import requests
from bs4 import BeautifulSoup
import re
import time
import csv k = int(input("第几页结束")) for n in range(1, k + 1): # n = int(input("第几页"))
url = f"http://www.cnnvd.org.cn/web/cnnvdpatch/querylist.tag?pageno={n}" # 访问这个网址拿取源码
url_1 = "http://www.cnnvd.org.cn/"
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Safari/537.36 Edg/103.0.1264.37"
}
data = requests.get(url, headers=head)
# print(data.text)
bs = BeautifulSoup(data.text, "html.parser")
# print(bs)
positioning = bs.find("div", class_="list_list").find_all("a") # 找到特殊位置进行筛选 不能_class 只可以class_
obj = re.compile(r'meta name="title" content="(?P<name>.*?)"', re.S) # 使用re.S参数以后,正则表达式会将这个字符串作为一个整体,在整体中进行匹配
# print(positioning)
obj_2 = re.compile(r'</a><p><span>(?P<time>.*?).*?</span>(?P<time_1>.*?)</p>', re.S) # 匹配时间的正则
f = open("bugku.csv", "a+", encoding="utf-8")
csv_writer = csv.writer(f)
if n == 1:
csv_writer.writerow(["漏洞名字", "修复措施", "发布时间"])
else:
pass
for a in positioning:
# print(a.get("href")) # BeautifulSoup可以通过get直接拿到href里面的链接
wangye = url_1 + a.get("href").strip("/") # 拼接新链接
req = requests.get(wangye) # 通过get访问新链接
# print(req.text)
names = obj.findall(req.text)
times = obj_2.finditer(req.text) # 在req里面匹配时间整成元组
for b in times:
nams = names[-1] # 漏洞名字
uul = wangye # 修复网页
timetime = b.group("time") + b.group("time_1") # 时间
print(nams, uul, timetime)
csv_writer.writerow([nams, uul, timetime]) time.sleep(2) f.close()
print("休息15秒")
time.sleep(15)

最新文章

  1. JS 原型,检索,更新,引用等
  2. InstantClick – 快速响应!让你的网站与众不同
  3. sql server常用知识点
  4. hdu 2845(dp基础题)
  5. cdoj 1136 邱老师玩游戏 树形背包
  6. PHP获取文件扩展名的多种方法
  7. 在mangento后台调用wysiwyg编辑器
  8. php中0,空,null和false的区别
  9. Mybatis增加对象属性不增加mapper.xml的情况
  10. Angular2 Service实践
  11. 【转】JavaWeb编码之get方式中文乱码问题
  12. 常见的数据扩充(data augmentation)方法
  13. Android虹软人脸识别sdk使用工具类
  14. Python 文件编译为字节码的方法
  15. linux cent os 6.5安装Nginx
  16. 前端vue框架 父组件与子组件之间的相互调用
  17. 2019.1.23 DFMEA for
  18. 第十章&#160;优先级队列 (b4)完全二叉堆:批量建堆
  19. 几张图轻松理解String.intern()
  20. Highcharts 基本条形图;Highcharts 堆叠条形图;Highcharts 反向条形图

热门文章

  1. C++智能指针的enable_shared_from_this和shared_from_this机制
  2. LoadRunner11脚本小技能之同步/异步接口分离+批量替换请求头
  3. zk系列一:zookeeper基础介绍
  4. Perl引用
  5. 修改input标签里面的提示文字(placeholder)的样式
  6. XTDrone和PX4学习期间问题记录(一)
  7. 深入理解Golang 闭包,直通面试
  8. Windows自带管理工具
  9. Android网络请求(2)
  10. 为什么标准库的模板变量都是inline的