码迷,mamicode.com
首页 > 编程语言 > 详细

在服务器上配置运行(每天一则段子python程序)

时间:2016-03-05 14:28:55      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

之前的文章里有一个用python—SMTP发信的程序,利用爬虫随机爬下段子网站的一则段子然后发送给指定收件人。

在本地计算机上运行这个程序只有及时性的功能(一直挂着也不太现实),所以现在将它放置在服务器端上。

需要将源程序稍微修改加上定时语句,如下列的每小时一则黄段子,拓展收件人列表。

#coding:UTF-8
import sys

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

#放置服务器上设置时间
import datetime
import time


to=[‘1@qq.com‘,‘2@qq.com‘,‘3@qq.com‘,4@qq.com‘,‘5@qq.com‘] 
host="smtp.163.com"  #smtp服务器
user="******"    #用户名
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="Jokes Sending!"+"<"+user+"@"+postfix+">"  
    msg = MIMEText(content,_subtype=‘plain‘,_charset=‘utf-8‘)  
    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  

def task():
      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   
      for m in range(0,5):#对收信人列表中的每个发邮件
        if send_mail(to[m],"Laugh !guys!",message2):  
            print "Suceed!"  
        else:  
            print "Failed!"
def timer(n):
    while True:
        task()
        time.sleep(n)


if __name__ == ‘__main__‘:
    while(1):
        timer(60*60) #延时一小时

  

接下来将它到服务器端,这里我们利用pscp.exe进行上传

pscp C:\Python27\smtp\smtp.py root@*****:/home/

  两个分别是本地路径和服务器路径,接下来输入password后就传输完成。

 

在服务器端,用SSH连接后,我们有多种定时执行此任务的方法

如crontab指令(本程序不用,因为代码里已经自带延迟了,若使用crontab使用上篇文章(未更改前)的代码即可)

crontab -e

  编辑cron文件,设置执行间隔时间(自行设定)和执行命令,可利用crontab -l 查看是否添加成功。

sudo service cron start

 ps: service start命令需要root权限才可以执行。

  ps2:若无python环境需要搭建,上述程序为python2.7版本,或缺少运行的库自行在服务器上安装配置pip。

完成后,该程序就能全天24小时按指定的时间间隔给收信人列表发段子啦。

 

在服务器上配置运行(每天一则段子python程序)

标签:

原文地址:http://www.cnblogs.com/fuzzer/p/5244722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!