Python selenium 爬取cnvd(国家信息安全漏洞共享平台)剩余部分
时间:2021-08-10
本文章向大家介绍Python selenium 爬取cnvd(国家信息安全漏洞共享平台)剩余部分,主要包括Python selenium 爬取cnvd(国家信息安全漏洞共享平台)剩余部分使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
# coding = utf-8
# @author :今夕
# @Time :2021.08.10 09:22
# @file :main2.py
# @software :PyCharm
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import re
import pymysql
import random
def main():
driver = webdriver.Chrome()
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
db = pymysql.connect(user='root', password='123456', host='localhost', database='cnvd')
cursor = db.cursor()
cursor.execute("select link from cnvd")
links = cursor.fetchall()
cursor.close()
db.cursor()
i=0
while i<len(links):
print("第%s条"%i)
driver.get(links[i][0])
time.sleep(3)
driver.refresh()
html=driver.page_source
print(len(html))
if len(html)<16975:
print("休眠120秒")
time.sleep(120)
print(("休眠结束"))
driver.refresh()
html = driver.page_source
dat=Parse(html)
update(dat,links[i][0])
i+=1
def Parse(html):
dat=[]
soup = BeautifulSoup(html, "html.parser") # 指定Beautiful的解析器为“html.parser”
for item in soup.find_all('tr'):
temp=item.text
temp=temp.replace("\n","").replace("\t","").replace(" ","").replace("'","")
dat.append(temp)
#print(dat)
return dat
def update(dat,url):
db = pymysql.connect(user='root', password='123456', host='localhost', database='cnvd')
cursor = db.cursor()
Affectproduct = dat[3].split("影响产品")[1] # 影响产品
CVEID = dat[4].split("CVEID")[1] # CVEID
VulnerabilityDescribes = dat[5].split("漏洞描述")[1] # 漏洞描述
HoleType = dat[6].split("漏洞类型")[1] # 漏洞类型
referenceLinking = dat[7].split("参考链接")[1] # 参考链接
solution = dat[8].split("漏洞解决方案")[1] # 解决方案
ManufacturersPatch = dat[9].split("厂商补丁")[1] # 产品补丁
VerificationInformation = dat[10].split("验证信息")[1] # 验证信息
Vulnerabilityaccessories = dat[14].split("漏洞附件")[1] # 漏洞附件
# print(Affectproduct)
# print(CVEID)
# print(VulnerabilityDescribes)
# print(HoleType)
# print(referenceLinking)
# print(solution)
# print(ManufacturersPatch)
# print(VerificationInformation)
# print(Vulnerabilityaccessories)
sql="update cnvd set Affectproduct='%s',CVEID='%s',VulnerabilityDescribes='%s',HoleType='%s',referenceLinking='%s',solution='%s',ManufacturersPatch='%s',VerificationInformation='%s',Vulnerabilityaccessories='%s' where link='%s'"%(Affectproduct,CVEID,VulnerabilityDescribes,HoleType,referenceLinking,solution,ManufacturersPatch,VerificationInformation,Vulnerabilityaccessories,url)
print(sql)
cursor.execute(sql)
db.commit()
cursor.close()
db.cursor()
time.sleep(7)
if __name__ == '__main__':
main()
print("爬取完成")
原文地址:https://www.cnblogs.com/jinxi7021/p/15122988.html
- Tensorflow实践:用神经网络训练分类器
- 理解闭包 js回收机制
- java 解析 XML实例
- Java 线程内异常处理
- Raphael path 拖动实现
- 黑猿大叔-译文 | TensorFlow实现Batch Normalization
- Java后端WebSocket的Tomcat实现
- jwplayer 隐藏属性方法记载
- TensorFlow从0到1丨开篇:Hello TensorFlow !
- JS原型继承和类式继承
- 在Servlet的init方法中创建线程
- TensorFlow从0到1丨第2篇:TensorFlow核心编程
- AngularJS中的按需加载ocLazyLoad
- AngularJS driective 封装 自动滚动插件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 虚拟机(Linux)常用命令
- Spring框架
- Servlet技术2
- 你缺的不是天赋,而是亲和度
- TypeScript: 为什么必须学
- 一、环境搭建、以及聊聊更重要的...
- 四、作用域与作用域链
- 【从0到1学算法】递归
- 手把手教你创建 Spring MVC 实例
- 举一反三:三种问题,两个指针,一种方法
- torch.backends.cudnn.benchmark ?!
- jQuery ui中sortable draggable droppable的使用
- 阿里面试:看你springBoot用的比较溜来,说说springboot自动装配是怎么回事?
- CVPR:深度无监督跟踪
- Discourse 数据分发