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的更多相关文章
随机推荐
- 解决Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-f8IeEI/MYSQL-python/
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-f8IeEI/MYS ...
- 【C#】 break continue return 的区别
static void Main(string[] args) { Console.WriteLine("使用break退出循环"); ; i < ; i++) { ) { ...
- C#-常用知识点
1.日期相关 获取英文月份名称 : DateTime.Now.ToString("MMMM") 1.1 各个字母所代表的意思 1.MM:月份 2.mm:分钟 3. MMMM:文字形 ...
- python 多线程锁机制
GIL(全局解释器锁) GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,是为了实现不同线程对共享资源访问的互斥,才引入了GIL 在Cpython解释器 ...
- Eclipse纯净版安装web插件
打开 Help -> Install New Software. 在Install界面板中,点击Add按钮输入:然后在输入http://download.eclipse.org/releases ...
- Kotlin基础(三)类、对象和接口
类.对象和接口 一.定义类的继承结构 一)Kotlin中的接口 Kotlin的接口与Java8中相似,它们可以包含抽象方法的定义以及非抽象方法的实现,但它们不能包含任何状态. interface Cl ...
- 潭州课堂25班:Ph201805201 django 项目 第二十三课 文章主页 轮播图前端实现 热门新闻推荐实现 详情页实现 (课堂笔记)
前台代码 // 在static/js/news/index.js文件中 $(function () { // 新闻列表功能 let $newsLi = $(".news-nav ul li& ...
- react-native-background-job——让你的react-native项目实现后台运行
安排在您的应用处于后台时运行JavaScript的后台任务. 即使应用程序已关闭,任务也会运行,默认情况下,也会在重新启动后继续存在. 这个库依赖于React Native的HeadlessJS ,目 ...
- python反转列表的三种方式
1.内建函数reversed() li =[1, 2, 3, 4, 5, 6] a = list(reversed(li)) print (a) 注意:reversed()函数返回的是一个迭代器,而不 ...
- Python中map函数
1.简介 python 提供内置函数map(), 接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回.例如: (1)对于list [1, 2 ...