啦啦啦,来交差了!!!

# -*- coding: utf-8 -*-
import re
import time
import requests
from random import randint
import  threading
import pymysql# thread_lock = threading.BoundedSemaphore(value=10)print('正在连接到mysql服务器...')
# 给定要连接的数据库IP地址、用户名、密码、数据库名
db = pymysql.connect(host="127.0.0.1",user="root",password="root",database="ali_cve" )
print('连接成功!')
# 创建一个游标对象 cursor
cursor = db.cursor()
# 执行SQL语句
cursor.execute("SHOW TABLES")
# 获取所有记录列表
result = cursor.fetchall()
print("当前的表为:%s" %result)# 获取网页内容
def get_onepage_content(url):user_agent = ['Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.7113.93 Safari/537.36','Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4482.0 Safari/537.36 Edg/92.0.874.0']try:response = requests.get(url, headers={'User-Agent':user_agent[randint(0,1)]})if response.status_code == 200:# print(response.text)return response.textreturnexcept Exception:return# 使用正则表达式提取cve信息字段
def show_cve_content(res):match = re.compile('<tr>.*?target="_blank">(.*?)</a></td>.*?<td>(.*?)</td>.*?<button.*?>(.*?)</button>.*?nowrap="nowrap">(.*?)</td>' +'.*?<button.*?>(.*?)</button>.*?</tr>', re.S)contents = re.findall(match, res)# print(contents)# for content in contents:# yield {#     'cve_id'   : content[0].strip(),#     'vul_name' : content[1],#     'vul_type' : content[2].strip(),#     'cve_date' : content[-2].strip(),#     'cvss_level': content[-1].strip()# }# content = list(content)return contents# 保持文件到ali_cve.txt文件中
def save_content_to_text(content):with open('ali_cve.txt','a+', encoding='utf-8') as f:f.write(content + '\n')# 数据插入mysql数据库
def save_to_mysql(content):global cve_id, vul_name, vul_type, cve_date, cvss_levelcve_id = content[0]vul_name = content[1]vul_type = content[2]cve_date = content[3]cvss_level = content[4]values = (cve_id, vul_name, vul_type, cve_date, cvss_level)# 插入数据语句query = """INSERT INTO cve_detail (cve_id, vul_name, vul_type, cve_date, cvss_level) values (%s, %s, %s, %s, %s)"""try:cursor.execute(query, values)print("数据插入Successful")db.commit()except:pass# # 写入完成后解锁# thread_lock.release()# 主函数
def main():for pagenum in range(1, 5474):url = 'https://avd.aliyun.com/nvd/list?page=' + str(pagenum)html = get_onepage_content(url)# print(html)for content in show_cve_content(html):# print(content)content = list(content)for i in range(0, len(content)):content[i] = content[i].strip()  # 去除字符串中的空格# 上锁# thread_lock.acquire()# task = threading.Thread(target=save_to_mysql, args=(content))# task.start()# 写入数据库save_to_mysql(content)# 关闭游标,提交,关闭数据库连接# 如果没有这些关闭操作,执行后在数据库中查看不到数据cursor.close()db.commit()db.close()# for pagenum in range(1, 500):#     url = 'https://avd.aliyun.com/nvd/list?page=' + str(pagenum)#     print("你现在爬取的页面url为:%s"%url)##     html = get_onepage_content(url)#     for content in show_cve_content(html):#         save_content_to_text(str(content))#     time.sleep(2)#print("数据已爬取完成!!!")if __name__ == "__main__":main()

给大家看看爬取完成后的成果:

查询下一共有多少行数据

使用cve_id查询

好了,收工吃饭了,不对我刚吃完饭回来哈哈!!

python爬取阿里云漏洞库完整版相关推荐

  1. python爬取阿里cve漏洞库信息

    水一篇爬取阿里漏洞库信息的文章,有好几周没写爬虫了,在爬取时感觉还是xpath爬取高效些,但是用的正则匹配(re库,python内置),正则虽说在写匹配样式时比较繁琐但是精确匹配还是得用它,只 爬取第 ...

  2. 爬取阿里云物联网平台设备的物模型数据

    背景说明 按项目经理的要求,需要导出阿里云物联网平台上所有设备的物模型数据到Excel上,方便后台导入.给客户演示和备份.但是,阿里云物联网平台没有这个功能,手动一个个处理不现实,因此只能写一个爬虫爬 ...

  3. 阿里云Maven仓库完整版

    阿里云Maven仓库完整版 <?xml version="1.0" encoding="UTF-8"?><!-- Licensed to th ...

  4. 用 Python 抓取阿里云盘资源

    文 | 某某白米饭 来源:Python 技术「ID: pythonall」 前阵子阿里云盘大火,送了好多的容量空间.而且阿里云盘下载是不限速,这点比百度网盘好太多了.这两天看到一个第三方网站可以搜索阿 ...

  5. python爬取百度云资源分享吧_python爬取百度云盘资源

    小测试,初学python. 1.[代码][Python]代码 import urllib import urllib.request import webbrowser import re def y ...

  6. 阿里云备案教程完整版(首次备案全过程)

    备案前准备: 注册账号--备案前您需要拥有一个阿里云账号(支付宝账户可直接登录) 域名准备--备案前需完成域名注册及实名认证 服务器准备--购买阿里云大陆境内服务器,或获取服务器的备案服务号 备案负责 ...

  7. python爬取微博数据词云_用Python爬取微博数据生成词云图片

    原标题:用Python爬取微博数据生成词云图片 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数 ...

  8. 利用Python爬取一加云服务的所有照片(原图)

    利用Python爬取一加云服务的所有照片(原图) 一.使用工具 二.cookies和headers提取 三.Python源代码下载 一.使用工具 1.Python3.8(理论上Python3都可使用) ...

  9. python爬取网抑云音乐评论

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.python爬取网抑云音乐评论 前言 提示:这里可以添加本文要记录的大概内容: python爬取网抑云音乐评论 提 ...

  10. 看看你爱的他今天是什么‘颜色‘ -- Python爬取微博评论制作专属偶像词云

    简介:快来拿出你珍藏的pick star,用大家对他的爱重塑一个他吧.通过爬取微博评论,制作你的偶像图片词云,天天都是不重样的哦! 很多人学习python,不知道从何学起. 很多人学习python,掌 ...

最新文章

  1. Android Build.VERSION.SDK_INT
  2. 在SecureCRT下使用sz下载和rz上传文件
  3. fcm算法c语言实现,基于特征权重的FCM算法研究及应用
  4. vue 圆形百分比进度条_快速构建一个圆形的进度条
  5. N个免费DevOps开源工具,没用过,至少应该了解!
  6. boost::r_c_shortest_paths用法的测试程序
  7. CTF入门--二进制
  8. 修改节点的属性 节点默认不允许修改
  9. 微信支付 签名算法 sign node实现
  10. 漫画 | 小白也能看懂的量子物理漫画终于来了!
  11. 遇见JMS[1] —— activeMQ的简单使用
  12. Veeam FAQ系列转载(四)
  13. 插入的数据不能时时查询到_漫谈 LevelDB 数据结构(一):跳表(Skip List)
  14. 我的CSDN博客之旅
  15. 微型计算机原理及应用技术ppt,微型计算机原理及应用技术.ppt
  16. Mac下修改文档编码方式
  17. Python3之标准库
  18. ppt更换模板以及修改图片背景色统一的问题
  19. crispr基因编辑_用CRISPR编程基因组
  20. USACO 4.2 The Perfect Stall 完美的牛栏(最大匹配)

热门文章

  1. 正则表达式(18)——字符串替换案例:UBB翻译
  2. Access仿Excel的RoundUp函数向上取整的方法。
  3. string类----猜词游戏
  4. 什么是时延?(延迟)
  5. KinectFusion
  6. java分布式框架-JDF
  7. SQL常用基础参考语句
  8. Xubuntu系统要求
  9. windows11 安全中心点击进去内容空白解决方法
  10. JAVA记忆翻牌游戏制作