基于python爬虫并将其结果利用smtp协议发送至邮箱:每天一则段子。

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件

python中有简洁可用的smtp模块,为邮件收发提供了便利,联系之前的用python写的爬虫爬下段子网站的段子(源博客:http://www.cnblogs.com/fuzzer/p/5094568.html),我们可以将其爬下的内容作为邮件内容进行发送。

源代码如下:

import sys
import re
import urllib
import smtplib
import random
from email.mime.text import MIMEText  

to=[‘[email protected]‘]
host="smtp.163.com"  #smtp服务器
user="duem123321"    #用户名
password="******"   #密码
postfix="163.com"  #后缀
def gethtml(url):
    page=urllib.urlopen(url)
    html=page.read()
    return html

def getmessage(html):
    p=re.compile(r‘<div class="content">(.*)</div><script type="text/javascript">‘)
    #对段子内容进行正则匹配
    message=re.findall(p,html)#返回正则匹配的结果
    return message
def send_mail(to_list,sub,content):
    me="段子集中营"+"<"+user+"@"+postfix+">"
    msg = MIMEText(content,_subtype=‘plain‘,_charset=‘gb2312‘)
    msg[‘Subject‘] = sub
    msg[‘From‘] = me
    msg[‘To‘] = ";".join(to_list)
    try:
        server = smtplib.SMTP()
        server.connect(host)
        server.login(user,password)
        server.sendmail(me, to_list, msg.as_string())
        server.close()
        return True
    except Exception, e:
        print str(e)
        return False
if __name__ == ‘__main__‘:
    i=random.randint(1,500)
    i=str(i)
    web=gethtml(‘http://ishuo.cn/subject/‘+i)
    #该网站段子的链接特点

    message=getmessage(web)

    message2=‘‘.join(message)#将结果转换为字符串类型

    #message2=message2.decode(‘utf8‘)
    message2=str(message2)
    print message2
    if send_mail(to,"每天一则搞笑段子",message2):
        print "Suceed!"
    else:
        print "Failed!"

  自行选择encode的方式:简体中文:gb2312 繁体中文:big5  UNICODE:UTF-8

收信结果如下:

可以将代码上传至购买的服务器,修改设置其运行时间,设置收信人列表,每天一则给想带去欢乐的人带去一点欢乐。

时间: 2024-10-04 09:49:34

基于python爬虫并将其结果利用smtp协议发送至邮箱:每天一则段子。的相关文章

20150307 利用smtp协议发送邮件

20150307 利用smtp协议发送邮件 2015-03-07 Lover雪儿 一.smtp匿名发邮件 ? Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. ? C:\Users\Administrator>nslookup -q=mx qq.com Server: XiaoQiang Address: 192.168.31.1 ? Non-au

python爬虫入门(四)利用多线程爬虫

多线程爬虫 先回顾前面学过的一些知识 1.一个cpu一次只能执行一个任务,多个cpu同时可以执行多个任务2.一个cpu一次只能执行一个进程,其它进程处于非运行状态3.进程里包含的执行单元叫线程,一个进程可以包含多个线程4.一个进程的内存空间是共享的,每个进程里的线程都可以使用这个共享空间5.一个线程在使用这个共享空间的时候,其它的线程必须等待(阻塞状态)6.互斥锁作用就是防止多个线程同时使用这块内存空间,先使用的线程会将空间上锁,其它的线程处于等待状态.等锁开了才能进7.进程:表示程序的一次执行

基于python爬虫项目,爬取某网站电子书,实战项目

1.主要反扒机制2.爬虫失败机制3.分析机制4.暂停续点爬取机制5.如需合作,请加我qq752477168,或者私信6.项目效果图 原文地址:https://blog.51cto.com/12119115/2453310

【python】python每天抓取一篇英语美文,发送到邮箱

import requests,os,time from bs4 import BeautifulSoup import smtplib from email.mime.text import MIMEText header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}

python之键盘监听木马(SMTP信箱收取监听结果、修改注册表自启动)

最近接触了python的win32库,库子提供了不少可用于windows开发的API,这里就利用这个为原理制作一个键盘监听木马的雏形. 这里需要使用额外的模块pythonHook(放置钩子时),pythoncom 主要监听功能相关代码: #放置键盘监听钩子 def seeing(): PH=pyHook.HookManager() PH.KeyDown=KeyboardEvent PH.HookKeyboard() pythoncom.PumpMessages() #键盘事件 def Keybo

基于Python的urllib2模块的多线程网络爬虫程序

1 m Queue import Queue 2 from gzip import GzipFile 3 from StringIO import StringIO 4 import time 5 import socket 6 class ContentEncodingProcessor(urllib2.BaseHandler): 7 """A handler to add gzip capabilities to urllib2 requests ""

基于python的知乎开源爬虫 zhihu_oauth使用介绍

今天在无意之中发现了一个知乎的开源爬虫,是基于Python的,名字叫zhihu_oauth,看了一下在github上面star数还挺多的,貌似文档也挺详细的,于是就稍微研究了一下.发现果然很好用啊.就在这里给大家介绍一下如何使用. 项目的主页地址在:https://github.com/7sDream/zhihu-oauth.作者的知乎主页为:https://www.zhihu.com/people/7sdream/. 项目的文档地址为:http://zhihu-oauth.readthedoc

python爬虫教程:《利用Python爬取表情包》

python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!

基于python的爬虫(一)

抓取网页 python核心库 urllib2 实现对静态网页的抓取,不得不说,"人生苦短,我用python"这句话还是有道理的,要是用java来写,这估计得20行代码 (对不住了博客园了,就拿你开刀吧) def staticFetch(): url = "http://www.cnblogs.com/" request = urllib2.Request(url) response = urllib2.urlopen(request) print response.