首页 > 编程语言 >Python爬取cnnvd

Python爬取cnnvd

时间:2023-01-15 15:48:02浏览次数:47  
标签:get Python text req 爬取 re cnnvd print csv

利用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)

标签:get,Python,text,req,爬取,re,cnnvd,print,csv
From: https://www.cnblogs.com/superwinner/p/17053589.html

相关文章

  • Python开发的常用组件
    1.生成6位数字随机验证码importrandomimportstringdefnum_code(length=6):"""生成长度为length的数字随机验证码:paramlength:验证码长度:......
  • python播放音频文件
    将mp3文件转换为wav文件trans_mp3_to_wav.pyfrompydubimportAudioSegment#这里filepath填的是.mp3文件的名字(也可加上路径)deftrans_mp3_to_wav(filepath):s......
  • Python爬取图片
    Python爬取图片目标链接:https://pic.netbian.com/4kfengjing/思路:先通过首页的源码分析提取到子页面的链接,然后通过子页面的链接的源码来提取到图片的下载链接,我们再访问......
  • Python邮箱推送
    利用python进行邮箱推送可以配和爬虫使用,也可以监控github上面CVE等一个基于Python的邮箱推送脚本需要有一个邮箱授权码不知道哪里获取可以百度就不多详细的描述了成......
  • Python的多态怎么理解
    之前搜索的解释都说鸭子模型,什么一个东西只要它叫起来像鸭子、走起来像鸭子、xxx的,它就可以被称为鸭子......
  • Python3.10.4激活venv环境失败解决方法
    环境python-mvenvvenvvenv\Scripts\activate激活环境失败解决方案输入get-executionpolicyPSD:\flaskBlog>get-executionpolicyRestrictedPSD:\flaskBlog>set......
  • python—web自动化(3)—验证码处理(商城-后台添加商品,小案例1)
    案例需求登录后台管理中心-点击商品管理点击‘添加商品’输入商品名称选择商品分类选择商品品牌点击提交按钮 技术点:验证码处理思路  验证码处理......
  • 极客编程python入门-数据库
    数据库程序运行的时候,数据都是在内存中的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。使......
  • 不用描述符,不算懂 Python
    在日常的编码中,我们应该使用Python的描述符,来使代码更具有单一职责原则,也就是SRP(SingleResponsibilityPrinciple)原则,如果你还没有用过描述符,那快来看看怎么用吧,不然就......
  • 哪种编程语言更适合编写Selenium Web驱动程序脚本,Python还是Java?
    在本文中,我们将学习哪种编程语言更适合编写SeleniumWeb驱动程序脚本,Python或Java。从选项池中选择理想的编程语言可能很困难。Python,Java和Selenium都有自己的一套功能。越......