5

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')))

上記のスパイダーコードでは、スパイダーの開始時刻と終了時刻が表示されますが、スパイダーの完了後、scrapyから「Scrapingが完了しました」というメールを受け取りたいと思います。これを行うことは可能ですか?可能であれば、そのコードをspider_closedメソッドで記述できますか?これを行う方法について、サンプルコードを共有してください。

4

2 に答える 2

12

ドキュメントを調べましたか:

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

ドキュメントからの基本的な使用法

from scrapy.mail import MailSender

mailer = MailSender()
mailer.send(to=["someone@example.com"], subject="Some subject", body="Some body", cc=["another@example.com"])

また、独自にカスタムを実装することもできます。たとえば、Gmailを使用する場合:

def send_mail(self, message, title):
    print "Sending mail..........."
    import smtplib
    from email.MIMEMultipart import MIMEMultipart
    from email.MIMEText import MIMEText
    gmailUser = 'mail_you_send_from@gmail.com'
    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")
于 2012-07-10T10:16:31.000 に答える
1

自己宣伝をお詫びしますが、最近yagmailを作成しました。これは、Gmailメッセージ(テキスト、HTML、画像など)を簡単に送信できるようにするためのパッケージです。

これは、接続する必要のあるコードです。

import yagmail
yag = yagmail.SMTP('mail_you_send_from@gmail.com', 'password')

次に、これを使用して電子メールを送信します。

yag.send('mail_to_send_to', 'Scraper Report', 'some message')

良い点は、設定をテキストとして保持する必要がないことですが、本当に安全で快適な感覚のためにOSのキーリングに頼ることができます。

ワンライナー(自動的に閉じる)の場合もあります。

SMTP('mail_you_send_from').send('mail_to_send_to', 'Scraper Report', 'some message')
于 2015-04-18T19:40:45.353 に答える