讓女朋友感受程序員的浪漫吧!
發送郵件函數,使用SMTP發送郵件:
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
def sendemail(toaddr='目標郵箱@qq.com', message=''):
fromaddr = 'xxx.com' # 你的郵箱
password = 'xxx' # 你的密碼
smtp_server = 'smtp.163.com' # smtp地址
msg = MIMEText(message, 'plain', 'utf-8')
msg['From'] = _format_addr('老公 <%s>' % fromaddr)
msg['To'] = _format_addr('老婆 <%s>' % toaddr)
msg['Subject'] = Header('每日晨間問候', 'utf-8').encode()
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)
server.login(fromaddr, password)
server.sendmail(fromaddr, [toaddr], msg.as_string())
server.quit()
return
每日爬取天氣和土味情話併發送
# -*- coding: utf-8 -*-
import requests
import random
from bs4 import BeautifulSoup
from datetime import datetime
def getWeather():
# 使用BeautifulSoup獲取天氣信息
response=requests.get('http://www.weather.com.cn/weather/101190201.shtml')
response.encoding='uft-8'
soup=BeautifulSoup(response.text,'html.parser')
tagToday=soup.find('p', class_="tem")
try:
temperatureHigh=tagToday.span.string
except AttributeError:
temperatureHigh=tagToday.find_next('p', class_="tem").span.string.replace('℃','')
temperatureLow=tagToday.i.string.replace('℃','')
weather=soup.find('p', class_="wea").string
tagWind=soup.find('p',class_="win")
winL=tagWind.i.string
today = datetime.now()
today = str(today.year)+'年'+str(today.month)+'月'+str(today.day)+'日'
content = '早安! 老婆~\n'+\
'今天是: '+today+'\n'+\
'無錫溫度: '+temperatureLow+'℃-'+temperatureHigh+'℃\n'+\
'天氣: '+weather+'\n'+\
'風級: '+winL
print(content)
return content
def getlloverwords():
# 獲取情話
texts = []
for i in range(1,70):
url = 'https://www.duanwenxue.com/huayu/tianyanmiyu/list_{}.html'.format(i)
response = requests.get(url)
texts.append(response.text)
articles = []
for text in texts:
soup = BeautifulSoup(text,'lxml')
arttis = soup.find('div', class_='list-short-article').find_all('a', {'target': "_blank"}) # 尋找情話內容
# 通過列表推導式以及for循環獲取到每個a標籤裏面的text內容並通過strip去除空格
articles.extend([arttis[i].text.strip() for i in range(len(arttis))])
todaywords = articles[random.randint(0, len(articles)-1)] # 隨機選取其中一條情話
return todaywords
def dailymorning():
message = getWeather()+'\n'+\
'今日份的土味情話:\n'+\
getlloverwords()
dailyemail.sendemail(toaddr='目標郵箱@qq.com', message=message)
if __name__ == '__main__':
dailymorning()
定時任務設置
參考:https://www.cnblogs.com/zz0eyu/p/9584000.html
這是windows自帶的功能,自認爲還是比較強大的。
請返回桌面,在我的電腦上右鍵選擇管理(Manage) -> System Tools -> Task Scheduler,在右側選擇Create Basic Task
這時會彈出一個新的窗口:
- 輸入任務名,下一步
- 之後會讓你選擇任務的執行週期,這裏選在Daily,然後選擇開始時間,Recur every這裏填寫1天,下一步
- 這裏要選擇任務執行的動作,這裏爲了執行python腳本,選擇start a program,下一步
- 接下來就要選擇執行的程序了,這裏需要特別注意:
- Program/script: Browse...這裏選擇pythonw.exe這個程序(後面會說明爲什麼不選擇python.exe)。因爲我的電腦裏同時安裝了python2和python3,所以我的最終路徑是這樣的C:\Users\YJChan\AppData\Local\Programs\Python\Python36\pythonw.exe
- Add arguments這裏填寫你的腳本路徑:E:\Entertainment\Audios\by\autosend.py
- Start in保持空白即可
任務創建完成,設置爲每天一次就可
效果: