crawler_exa1
编辑中...
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Tdcqma '''
网页爬虫,版本 2017-09-20 21:16
''' import urllib.request
import ssl,re
import smtplib,email
import datetime url="http://www.nsfocus.net/index.php?act=sec_bug&type_id=&os=&keyword=&page=1" request = urllib.request.Request(url) # 当尝试访问https开始当站点时,设置全局取消SSL证书验证
ssl._create_default_https_context = ssl._create_unverified_context response = urllib.request.urlopen(request)
data = response.read().decode('utf-8') # 保存当前日期到today变量里
today = str(datetime.date.today()) # 使用正则表达式匹配指定安全警报内容
str = "<li><span>"+today+".*"
res = re.findall(str,data) # 发送邮件
chst = email.charset.Charset(input_charset = 'utf-8')
header = ("From: %s\nTo: %s\nSubject: %s\n\n" %
("from_mail@163.com",
"to_mail@163.com",
chst.header_encode("[爬虫安全通告-绿盟]"))) # 打开本地文件,目的为将抓取到的报警信息写入文件
f = open("secInfo-lvmeng.txt",'w',encoding='utf-8') # 生产列表保存所有安全漏洞标题 tomcat_sec = ["Apache Tomcat 漏洞告警(当前生产版本为7.0.68)\n\n"]
Cisco_sec = ["Cisco 漏洞告警(当前生产版本为1.0.35)\n\n"]
WebLogic_sec = ["WebLogic 漏洞告警(当前生产版本为10.33)\n\n"] tomcat_msg = ''' '''
WebLogic_msg = ''' '''
Cisco_msg = ''' ''' msg = ''' '''
for line in res:
tomcat_title = "Apache Tomcat 漏洞告警(当前生产版本为7.0.68)"
sub_url = "http://www.nsfocus.net"+line[37:50] # 获取安全漏洞链接
vul_title = line[52:-40] # 获取安全漏洞标题
if "Apache Tomca" in vul_title:
line = " ♠ "+today+" "+vul_title+"\n >> "+sub_url+'\n\n'
tomcat_msg += line # 逐行读取,将其保存到msg字符变量里。
tomcat_sec.append(line)
elif "WebLogic" in vul_title:
line = " ♠ " + today + " " + vul_title + "\n >> " + sub_url + '\n\n'
WebLogic_msg += line
WebLogic_sec.append(line)
elif "Cisco" in vul_title:
line = " ♠ " + today + " " + vul_title + "\n >> " + sub_url + '\n\n'
Cisco_msg += line
Cisco_sec.append(line) msg = [tomcat_sec,WebLogic_sec,Cisco_sec]
secu_msg = ''' ''' for i in range(len(msg)):
if len(msg[i]) > 1:
for j in range(len(msg[i])):
secu_msg += msg[i][j] f.writelines(secu_msg)
f.close()
msg = secu_msg # 借用163smtp服务器发送邮件,将上面读到的报警信息作为邮件正文发送。
email_con = header.encode('utf-8') + msg.encode('utf-8')
smtp = smtplib.SMTP("smtp.163.com")
smtp.login("from_mail@163.com","from_mail_pass")
smtp.sendmail('from_mail@163.com','to_mail@163.com',email_con)
print('mail send success!')
smtp.quit()
获取爬虫邮件截图:
crawler_exa1的更多相关文章
随机推荐
- Unity容器的简单AOP与DI的应用Demo(基于asp.net mvc框架)
转发请注明出处:https://home.cnblogs.com/u/zhiyong-ITNote/ 整个Demo是基于Controller-Service-Repository架构设计的,每一层之间 ...
- Centos6.5部署Rsyslog-日志的存储方式及监测服务状态
1.以IP地址命名 在/etc/rsyslog.conf中加入如下配置,并做好备注.添加这三行配置之后,远程日志会被单独输出到一个以IP命名的日志文件中. #IP format by zhz at x ...
- Git在eclipse中的使用,克隆导入eclipse项目
一 Eclipse 安装EGit 1)安装 Eclipse Juno 版后已经集成了EGit,可以通过如下地址安装:http://download.eclipse.org/egit/upda ...
- 流畅的Python读书笔记(二)
2.1 可变序列与不可变序列 可变序列 list. bytearray. array.array. collections.deque 和 memoryview. 不可变序列 tuple. str 和 ...
- Hass.io: add-on Configurator
{ "username": "admin", "password": "admin", "cert ...
- fastjson 使用教程
fastjson 是阿里的开源项目,具网上的说法 fastjson 的解析速度是 Gson 的6倍,体积小,而且开源. 项目地址: https://github.com/alibaba/fastjso ...
- selenium3 文件系列之------ opencsv读取csv文件
最近在学习selenium有关文件的读取测试,今天先总结一下如何读取csv文件.CSV的定义是与逗号分隔的值(Comma-Separated Values),在Java中需要用到第三方lib去处理读取 ...
- JS_高程5.引用类型(1)Object类型
引用类型 在ECMASCript中,引用类型是一种数据结构,将数据和功能组织在一起,引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法.(注意:尽管ECMAScript从技术上 ...
- JS_高程3.基本概念(6)函数
1.ECMAScript中的函数使用function关键字来声明. eg: function sum (num1,num2){ alert(num1+num2); } sum(3,7); 注意: 在有 ...
- GMA Round 1 数列求和(Hard)
传送门 数列求和(Hard) 在数列{$a_n$}中,$a_1=-\frac{1}{4}$,$\frac{1}{a_{n+1}}+\frac{1}{a_n}=\begin{cases}-3(n为偶数) ...