当scrapy爬取完成以后会发送详细信息到邮箱

1.首先编写邮件发送模块

#!usr/bin/env python

# -*- coding:utf-8 -*-

"""

@file: emailHandler.py

@time: 2018/04/21

"""

# 邮件服务封装

import smtplib

from email.mime.text import MIMEText

from email.utils import formataddr

status = {} # 状态码

pipeline_item = {"item": 0, # 成功item项

"item_error": 0, # 失败item项

"error_info": "" # 失败原因

}

spider_time = {"start": "", "end": ""} # 开始结束时间

class EmailHandler(object):

def __init__(self, user, password, type_=0):

"""

:param user:str 发送人邮箱地址(用户名)

:param password:str 发送人申请的授权码

:param type_:int 0 为QQ邮箱 1 为163邮箱

"""

self.__QQ = {'smtp': 'smtp.qq.com', 'port': 465}

self.__163 = {'smtp': 'smtp.163.com', 'port': 25}

self.user = user

self.password = password

if type_ == 0:

self.server = smtplib.SMTP_SSL(self.__QQ['smtp'], self.__QQ['port'])

self.server.login(self.user, self.password)

elif type_ == 1:

self.server = smtplib.SMTP_SSL(self.__163['smtp'], self.__163['port'])

self.server.login(self.user, self.password)

def send_mail(self, to, subject, content=None):

"""

:param to:str 接收人邮箱地址

:param subject:str 邮件标题

:param content:str 邮件内容

:return:bool True 成功 False 失败

"""

try:

if not content:

content = "\r\n"

for key in status.keys():

content += "状态码%s:%s次\r\n" % (key, status.get(key))

content += "\r\n"

content += "存入数据库成功条数:%s 条\r\n存入数据库失败条数:%s 条\r\n" % (pipeline_item.get("item"),

pipeline_item.get('item_error'))

if pipeline_item.get('item_error') > 0:

content += "失败原因:%s" % pipeline_item.get('error_info')

content += "\r\n"

content += "爬虫启动时间:%s \r\n爬虫结束时间:%s" % (spider_time.get("start"), spider_time.get("end"))

msg = MIMEText(content, 'plain', 'utf-8')

msg['From'] = formataddr(['', self.user])

msg['To'] = formataddr(['', to])

msg['Subject'] = subject

self.server.sendmail(self.user, to, msg.as_string())

print("【%s】邮件发送成功" % subject)

return True

except Exception as f:

print("【%s】邮件发送失败,请检查信息" % subject)

return False

2.提供邮件提示所有数据

2.1在下载中间件中添加如下代码

from xxx.emailHandler import *

def process_response(self, request, response, spider):

# Called with the response returned from the downloader.

# Must either;

# - return a Response object

# - return a Request object

# - or raise IgnoreRequest

if response.status in status.keys():

status[response.status] += 1

else:

status[response.status] = 0

return response

2.2 在管道中加入如下代码

from xxx.middlewares import pipeline_item

def process_item(self, item, spider):

client = MongoClient(self.host, self.port)

db_auth = client.xiaosidb

db_auth.authenticate(self.user, self.passwd)

db = client[self.db]

table = db[self.table]

# data = dict(item)

try:

table.insert(dict(item))

pipeline_item['item'] += 1

except Exception as e:

pipeline_item['item_error'] += 0

pipeline_item['error_info'] = e

return item

2.3在spiders 爬虫程序中加入如下代码

from xxx.middlewares import *

def start_requests(self):

spider_time['start'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))

def close(spider, reason):

spider_time['end'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))

to_sender = 'xxxx' # 要发送的邮箱

mail = EmailHandler(user='xxxx', password='xxx')

mail.send_mail(to_sender, '邮件标题')

3. 当爬虫运行完毕以后会发送邮件

python发送邮件并返回提示_python-邮件提醒功能相关推荐

  1. python发送邮件并返回提示_用python3的smtplib库发邮件一直返回无法发送邮件提示,是什么原因?...

    按照网上python3发邮件的教程,在jupyter运行都返回发送失败提示,是缺少了什么环境吗? 代码应该没问题,不过还是贴出来: # import smtplib # from email.mime ...

  2. 基于UDP心跳监测及邮件提醒功能的看门狗实现

    1. 背景 在服务器应用程序中,为了能够及时检测到服务器程序崩溃,并重新启动服务器程序,所以,我们需要实现一个监测程序,持续检测服务器程序的运行状态. 2. 思路 在服务器程序中,建立一个基于UDP的 ...

  3. linux主机邮件提醒,Linux用户登陆邮件提醒功能怎么设置?

    为了服务器的安全起见,我们在用户登陆的时候就发一份邮件进行提醒,不管是正常的用户登陆还是从其他地方进行登陆的用户,下面小编与大家分享一下如何做好Linux用户登陆的邮件提醒功能,希望对大家有所帮助,谢 ...

  4. python QQ空间新说说邮件提醒功能实现

    先看一下qq邮件是怎么发送的!! 我们先做一个qq邮件发送的插件 #coding:utf-8 #导入所需要的工具包 import smtplib import time from email.mime ...

  5. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)...

    简介 本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理.在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下, ...

  6. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上

    简介 本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理.在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下, ...

  7. python 发送邮件附件很慢_python发送邮件附件

    python发送邮件附件 完整示例: import smtplib import os # from email.header import Header from email.mime.text i ...

  8. 获取python脚本的返回值_Python多线程获取返回值代码实例

    这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值 ...

  9. python函数默认返回值_python笔记20_函数返回值

    主要内容: 小目标:掌握函数返回值 主要内容:return语句,返回多个参数 如果看完这篇文章,你还是弄不明白函数返回值: 你来找我,我保证不打你,我给你发100的大红包. 1. 函数默认返回值 Py ...

最新文章

  1. visual studio 2013 中配置OpenCV2.4.13 姿势
  2. php图片写入带问号_php实现图片上传时添加文字和图片水印技巧
  3. linux sysctl重启服务,Linux /etc/sysctl.conf重启没有生效
  4. Tomcat服务器与Eclipse的关联配置
  5. socket通信 _ 一个简单的群聊系统
  6. This will have no impact if delete.topic.enable is not set to true以及删除kafka中的topic
  7. 8 PP配置-生产主数据-工作中心相关-定义工作中心负责人
  8. Python+tkinter+pillow实现屏幕任意区域截图
  9. 死锁问题分析(个人认为重点讲到了gap间隙锁,解决了我一些不明报死锁的问题)
  10. java实现归并排序(详解)
  11. 上海黑马python培训
  12. ETC和车联网安全认证的基本原理的分析和比较
  13. 如何使用gitee(码云)提交,拉取管理项目代码
  14. Verilog 语言基础
  15. pg_hint_plan 使用hint固定SQL执行计划
  16. Linux网络开始收发包之前需要做的事情——创建ksoftirqd内核进程
  17. STM32笔记20--电容触摸实验/IIC协议
  18. 软件测试之谷歌测试定律
  19. 四阶龙格库塔法的基本思想_请问用四阶龙格库塔法解二阶微分方程的思想是什么?...
  20. C语言 穷举法 百元买百鸡问题。

热门文章

  1. 模拟退火解决TSP问题
  2. 我的MVVM框架 v0.1发布
  3. juniper CLI 基本操作
  4. 数论 —— 线性同余方程组与中国剩余定理
  5. 数列分块入门 4(LibreOj-6280)
  6. 暑期训练日志----2018.7.30
  7. 信息学奥赛一本通C++语言——1040:输出绝对值
  8. 信息学奥赛C++语言:输出浮点数(1)
  9. 信息学奥赛一本通C++语言——1030: 计算球的体积
  10. 信息学奥赛C++语言:求三位数的值