在scrapy中抓取后发送电子邮件

2023-11-26

pipeline.py代码

class Examplepipeline(object):

    def __init__(self):
        dispatcher.connect(self.spider_opened, signal=signals.spider_opened)
        dispatcher.connect(self.spider_closed, signal=signals.spider_closed)

    def spider_opened(self, spider):
        log.msg("opened spider  %s at time %s" % (spider.name,datetime.now().strftime('%H-%M-%S')))

    def process_item(self, item, spider):
            log.msg("Processsing item " + item['title'], level=log.DEBUG)


    def spider_closed(self, spider):
        log.msg("closed spider %s at %s" % (spider.name,datetime.now().strftime('%H-%M-%S')))

在上面的spider代码中,它会显示spider的开始时间和结束时间,但是现在spider完成后,我想收到来自scrapy的“抓取已完成”的邮件。是否有可能做到这一点。如果可能的话,我们可以在Spider_Closed方法中编写该代码,任何人都可以分享一些关于如何执行此操作的示例代码。


您是否查看过文档:

http://doc.scrapy.org/en/latest/topics/email.html

文档中的基本用法

from scrapy.mail import MailSender

mailer = MailSender()
mailer.send(to=["[email protected]"], subject="Some subject", body="Some body", cc=["[email protected]"])

您也可以自己实现一些自定义的东西。例如,如果您想使用 Gmail:

def send_mail(self, message, title):
    print "Sending mail..........."
    import smtplib
    from email.MIMEMultipart import MIMEMultipart
    from email.MIMEText import MIMEText
    gmailUser = '[email protected]'
    gmailPassword = 'password'
    recipient = 'mail_to_send_to'

    msg = MIMEMultipart()
    msg['From'] = gmailUser
    msg['To'] = recipient
    msg['Subject'] = title
    msg.attach(MIMEText(message))

    mailServer = smtplib.SMTP('smtp.gmail.com', 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(gmailUser, gmailPassword)
    mailServer.sendmail(gmailUser, recipient, msg.as_string())
    mailServer.close()
    print "Mail sent"

并像这样称呼它:

send_mail("some message", "Scraper Report")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在scrapy中抓取后发送电子邮件 的相关文章

  • python导入模块时如何避免一直写模块名?

    我用math最近模块很多 我不想写math sqrt x and math sin x 每时每刻 我想缩短它并写sqrt x and sin x How 对于较长的模块名称 通常会缩短它们 例如 import numpy as np 然后您
  • KFold 和 ShuffleSplit CV 有什么区别?

    看起来 KFold 每次迭代对象时都会生成相同的值 而 Shuffle Split 每次都会生成不同的索引 它是否正确 如果是这样 其中一个相对于另一个有什么用处 cv cross validation KFold 10 n folds 2
  • Python 在 chroot 中运行时出现错误

    我尝试在 chroot 中运行一些 Python 程序 但出现以下错误 Could not find platform independent libraries
  • 通过 SMTP 发送带有保证 ID 的消息

    再会 抱歉提出这么 明确 的问题 让我解释一下 在我的 程序 中 我通过 例如 gmail SMTP 服务器发送一些电子邮件 假设我发送的每封电子邮件的标头中都包含一些唯一的 ID 由我生成 从 gmail 检索消息 例如 使用 pytho
  • 将 API 数据存储到 DataFrame 中

    我正在运行 Python 脚本来从 Interactive Brokers API 收集金融市场数据 连接到API后 终端打印出请求的历史数据 如何将数据保存到数据帧中而不是在终端中流式传输 from ibapi wrapper impor
  • 为什么我的scoped_session 引发 AttributeError: 'Session' object has no attribute 'remove'

    我正在尝试建立一个系统 将数据库操作优雅地推迟到单独的线程 以避免在 Twisted 回调期间发生阻塞 到目前为止 这是我的方法 from contextlib import contextmanager from sqlalchemy i
  • 使用 Scipy imsave 将 Numpy 数组保存到图像时保留未更改的数据

    使用 Scipy 保存二维 Numpy 数组 单个值 时toimage or imsave像素值与 Numpy 数组中的像素值不完全匹配 相反 在某些区域 主要是边缘 图像算法似乎使用某种插值 是否有一个选项可以停止插值并保留准确的数据 例
  • 如何从 Python 中指定运行程序的输入文件?

    我正在编写一个外部脚本 以通过笔记本电脑上的 Python mrjob 模块 而不是在 Amazon Elastic Compute Cloud 或任何大型集群上 运行 mapreduce 作业 我读自mrjob文档 http packag
  • Python 视频框架

    我正在寻找一个 Python 框架 它将使我能够播放视频并在该视频上绘图 用于标记目的 我尝试过 Pyglet 但这似乎效果不是特别好 在现有视频上绘图时 会出现闪烁 即使使用双缓冲和所有这些好东西 而且似乎没有办法在每帧回调期间获取视频中
  • Python正则表达式从字符串中获取浮点数

    我正在使用正则表达式来解析字符串中的浮点数 re findall a zA Z d d t 是我使用的代码 这段代码有问题 如果数字和任何字符之间没有空格 则不会解析该数字 例如 0 1 2 3 4 5 6 7 8 9 的预期输出为 0 1
  • 参数验证,Python 中的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 让我们举一个 API 的例子 def get abs directory self path if os path isdir path ret
  • numpy.cov() 返回意外的输出

    我有一个 X 数据集 有 9 个特征和 683 行 683x9 我想获取这个 X 数据集和另一个与 X 具有相同形状的数据集的协方差矩阵 我使用np cov originalData generatedData rowvar False 代
  • 大型数据集上的 Sklearn-GMM

    我有一个很大的数据集 我无法将整个数据放入内存中 我想在这个数据集上拟合 GMM 我可以用吗GMM fit sklearn mixture GMM 重复小批量数据 没有理由重复贴合 只需随机采样您认为机器可以在合理时间内计算的尽可能多的数据
  • Jupyter Notebook:没有名为 pandas 的模块

    我搜索了其他问题 但没有找到任何有帮助的内容 大多数只是建议您使用 conda 或 pip 安装 pandas 在我的 jupyter 笔记本中 我试图导入 pandas import pandas as pd 但我收到以下错误 Modul
  • 如何使用Featuretools按列值从单个数据框中的多个列创建特征?

    我正在尝试根据之前的结果来预测足球比赛的结果 我在 Windows 上运行 Python 3 6 并使用 Featuretools 0 4 1 假设我有以下代表结果历史记录的数据框 原始数据框 https i stack imgur com
  • 获取调用者文件的绝对路径

    假设我在不同的目录中有两个文件 1 py 比如说 在C FIRST FOLDER 1 py and 2 py 比如说 在C SECOND FOLDER 2 py 文件1 py进口2 py using sys path insert 0 pa
  • issubclass() 对从不同路径导入的同一类返回 False

    目的是实现某种插件框架 其中插件是同一基类 即 A 的子类 即 B 基类使用标准导入加载 而子类使用 imp load module 从众所周知的包 即 pkg 的路径加载 pkg init py mod1 py class A mod2
  • 在Python中从日期时间中减去秒

    我有一个 int 变量 它实际上是秒 让我们调用这个秒数X 我需要得到当前日期和时间 以日期时间格式 减去的结果X秒 Example If X是 65 当前日期是2014 06 03 15 45 00 那么我需要得到结果2014 06 03
  • 从数据集的给定日期范围中提取属于一天的数据

    我有一个数据集 日期范围为 2018 年 1 月 12 日到 8 月 3 日 其中包含一些值 维数为my df数据框是 my df shape 9752 2 每行包含半小时频率 第一行开始于2018 01 12 my df iloc 0 D
  • 为什么用字符串和时间增量转置 DataFrame 会转换数据类型?

    这种行为对我来说似乎很奇怪 id列 字符串 在转置后转换为时间戳df如果另一列是时间增量 import pandas as pd df pd DataFrame id 00115 01222 32333 val 12 14 170 df v

随机推荐

  • net/http.rb:560:in `initialize': getaddrinfo: 名称或服务未知(SocketError)

    timestamp nil def generate oauth url timestamp timestamp url CONNECT URL REQUEST TOKEN PATH oauth callback OAUTH CALLBAC
  • 带有 v-for 的动态 v 模型

    我有一个 v for 循环 它将吐出多行输入 我想将每个单独的行动态保存到数组对象中 v for table class table m 0 tbody tr td fund name td tr tbody table
  • 来自电子邮件地址的域的正则表达式

    任何人都可以帮助我使用正则表达式来返回电子邮件地址的末尾部分 符号之后 吗 我是正则表达式的新手 但想学习如何使用它 而不是编写低效的 Net 字符串函数 例如 对于输入 电子邮件受保护 我需要 example com 的输出 干杯 蒂姆
  • $q.reject 和处理 AngularJS 链式承诺中的错误

    我无法理解使用链接承诺进行错误处理的基本概念 为了学习规则 我写了一个简单的例子 猜测结果会是什么 但不幸的是 它的行为并不像我想象的那样 我已经阅读了多篇有关该主题的文章 但由于我的英语水平不佳 我可能无法获得详细信息 无论如何 这是我的
  • Python 文件变量 - 它是什么?

    我刚刚开始使用 Python 由于我的背景是低级语言 java C 所以我无法真正理解一些东西 因此 在 python 中 我们可以通过打开一个文本文件来创建一个文件变量 然后像这样迭代它的行 f open sys argv 1 for l
  • 正则表达式匹配任何大于 1 的整数

    我最近刚刚开始学习正则表达式 我正在尝试找出如何匹配任何大于 1 的数字的模式 到目前为止我想出了 2 9 0 9 但它仅适用于最左边的数字不为 1 的情况 例如 234有效但是124没有 所以我想要实现的是个位数1不应匹配任何大于应匹配的
  • Postgres 是否支持嵌套或自治事务?

    我遇到的情况是 我必须将一部分代码作为其自己的事务提交 我创建了一个表subtransaction tbl CREATE TABLE subtransaction tbl entryval integer 以及 plpython3u 语言中
  • 如何在 Mac OSX 上安装 PCRE 开发标头

    我刚刚将 MacBook Pro 升级到 Mavericks 当我访问时 我本地的 Ruby on Rails 开发环境并没有立即运行localhost I see It works 并记得我需要启动 Phusion Passenger 所
  • 特征列嵌入查找

    我一直在使用tensorflow中的数据集和feature columns https developers googleblog com 2017 11 introducing tensorflow feature columns htm
  • ModuleNotFoundError:没有名为“pyperclip”的模块

    类似的问题已经发布在 StackOverflow 上 但我没有找到足够的答案来解决这个问题 我在 Windows 7 计算机上运行 Python 3 6 3 在 IDLE 中 我输入以下 import stmt 并收到后续错误 gt gt
  • 如何在VB 2010中通过文件的默认应用程序打开选定的文件?

    我有用 VB 2010 编写的 Windows 应用程序 在这里 用户可以从打开的对话框中选择任何文件 所以 我想在相应的应用程序中打开该文件 例如 假设用户选择 docx 文件 那么我必须使用 msword 打开该文件 假设 如果它是一个
  • 排序哈希表(映射、字典)数据结构设计

    下面是数据结构的描述 它的操作就像一张普通的地图get put and remove方法 但有一个sort可以调用对地图进行排序的方法 然而 地图记得它的排序结构 因此后续调用 sort 可以更快 如果结构在调用之间没有改变太多 sort
  • ImageMagick 转换和 GNU 并行在一起

    我想加快以下命令的速度 convert limit memory 64 limit map 128 antialias delay 1x2 final png movie mp4 我见过其他的博客文章其中并行和转换一起使用 所以我想知道如何
  • 从多个选择列表中获取未选择的选项

    我有一个多选列表 当用户取消选择所选选项时 我想知道用户取消选择的选项的值 我该如何捕捉它 我的示例代码如下
  • 动态地将一组字段添加到反应式表单中

    我有两个输入字段 姓名和姓氏 我有两个按钮 提交和 添加人员 单击 添加人员 应添加一组新字段 姓名 如何实现这一目标 我找到了如何动态添加单个输入字段的解决方案 但在这里我需要添加一组 我的代码现在没有 添加人员 功能 import Fo
  • 为什么在 Windows 上尝试 Socket.connect 失败需要 1 秒?

    使用 net 时 我注意到尝试连接到未侦听的端口总是需要 1 秒 检查这是否是 net 抽象中的问题或者是否是较低级别的问题 并将其与 linux 进行比较 其中不成功telnet大约需要 3 毫秒 我使用了一个 node js 脚本来连接
  • 使用 Angular CLI 和 Angular 5 在运行时动态加载新模块

    目前我正在开发一个托管在客户端服务器上的项目 对于新的 模块 有无意重新编译整个应用程序 也就是说 客户想要在运行时更新路由器 延 迟加载模块 我已经尝试了几种方法 但无法使其发挥作用 我想知道你们中是否有人知道我还可以尝试什么或我错过了什
  • 如何使用 jQuery 发出指定 contentType 的 jsonp POST 请求?

    我需要使用内容类型 application json 发出 jsonp POST 请求 我可以像这样向服务器发出 POST 请求 jQuery ajax type POST url url data data success success
  • Swift 中的#pragma 标记?

    在 Objective C 中 我可以使用 pragma mark在符号导航器中标记我的代码部分 由于这是一个 C 预处理器命令 因此它在 Swift 中不可用 Swift 中是否有替代方案 或者我是否必须使用丑陋的注释 您可以使用 MAR
  • 在scrapy中抓取后发送电子邮件

    pipeline py代码 class Examplepipeline object def init self dispatcher connect self spider opened signal signals spider ope