闲得无聊,我只能继续重复造轮子度日了。
参数说明:
python cnvd.py -n 编号1,编号2
运行截图
上脚本。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author:Y4er
import requests
import argparse
import progressbar
import prettytable as pt
from bs4 import BeautifulSoup
headers = {
'Referer': 'http://www.cnvd.org.cn/flaw/list.htm',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}
# 一个编号处理方法
def one(number):
url = 'http://www.cnvd.org.cn/flaw/show/' + number
tb = getinfo(url,number)
print(tb)
# 多个编号
def many(nums):
tbs = []
p = progressbar.ProgressBar()
for number in p(nums):
url = 'http://www.cnvd.org.cn/flaw/show/' + number
tb = getinfo(url,number)
tbs.append(tb)
for tb in tbs:
print(tb)
# 获取表格
def getinfo(url,number):
tb = pt.PrettyTable(["title","value"])
# 获取源码
r = requests.get(url,headers=headers).text
soup = BeautifulSoup(r,'html.parser')
# 获取数据
trs = soup.findAll(name="tr")[:13]
for idx,tr in enumerate(trs):
# print(idx,tr.get_text())
tds = tr.findAll(name="td")
title = tds[0].get_text().strip()
value = tds[1].get_text().strip().replace('\r','').replace('\t','').replace('\n','')
if len(value)>=60:
value = value[:60] + '...'
tb.add_row([title,value])
return tb
if __name__ == '__main__':
# 命令行参数
parser = argparse.ArgumentParser()
parser.add_argument('-n',dest='number',help='input your cnvd number',required=True)
args = parser.parse_args()
if args.number==None:
print(args.print_help)
# 切片 判断是一个编号还是多个
nums = args.number.split(',')
if len(nums) == 1:
one(nums[0])
else:
many(nums)
原创文章,作者:Y4er,未经授权禁止转载!如若转载,请联系作者:Y4er


微信扫一扫
支付宝扫一扫 