使用python固定時間給郵箱傳送天氣資訊

2021-10-23 18:03:13 字數 2496 閱讀 2312

import requests

import smtplib

import schedule

import time

from bs4 import beautifulsoup

from email.mime.text import mimetext

from email.header import header

#匯入模組,沒有的自己去裝。

account =

input()

password =

input

('請輸入你的密碼:'

)receiver =

input()

#獲取郵箱密碼,密碼是qq郵箱授權碼,不是qq密碼

defweather_spider()

:#這個函式作用是爬取天氣資訊

headers=

#表頭,如果沒有容易爬不到

url=

''#中國天氣網中我的地點的天氣資訊的**,你可以複製到瀏覽器換成你的地點,然後再複製過來**,這樣天氣資訊就是那裡的。

res=requests.get(url,headers=headers)

#返回物件

res.encoding=

'utf-8'

#網頁用的utf——8編碼,所以在這裡要生明一下

soup=beautifulsoup(res.text,

'html.parser'

)#返回網頁資訊

tem1= soup.find(class_=

'tem'

) weather1= soup.find(class_=

'wea'

)#查詢天氣資訊

tem=tem1.text

weather=weather1.text

return tem,weather

#使用return返回值,把資訊儲存,為了後面呼叫

defsend_email

(tem,weather)

:#這個函式的作用是傳送資訊

global account,password,receiver

mailhost=

'smtp.qq.com'

#把qq郵箱的伺服器位址賦值到變數mailhost上,位址應為字串格式

qqmail = smtplib.smtp(

)#例項化乙個smtplib模組裡的smtp類的物件,這樣就可以呼叫smtp物件的方法和屬性了

qqmail.connect(mailhost,25)

#連線伺服器,第乙個引數是伺服器位址,第二個引數是smtp埠號。

#以上,皆為連線伺服器。

qqmail.login(account,password)

#登入郵箱,第乙個引數為郵箱賬號,第二個引數為郵箱密碼

content= tem+weather

#爬取的天氣資訊

message = mimetext(content,

'plain'

,'utf-8'

)#例項化乙個mimetext郵件物件,該物件需要寫進三個引數,分別是郵件正文,文字格式和編碼

subject =

'今日天氣預報'

message[

'subject'

]= header(subject,

'utf-8'

)#在等號的右邊是例項化了乙個header郵件頭物件,該物件需要寫入兩個引數,分別是郵件主題和編碼,然後賦值給等號左邊的變數message['subject']。

try:

#開始傳送

qqmail.sendmail(account, receiver, message.as_string())

print

('郵件傳送成功'

)except

:print

('郵件傳送失敗'

) qqmail.quit(

)def

job():

#建立傳送函式

print

('開始一次任務'

) tem,weather = weather_spider(

)#將爬取的天氣資訊的返回值賦值給tem,weather,使傳送郵件的函式呼叫

send_email(tem,weather)

#給傳送郵件的函式的變數賦值,並且呼叫該函式

print

('任務完成'

)schedule.every(

).day.at(

"10:00"

).do(job)

#設定傳送週期,這個是每天10點傳送,不過前提是需要電腦一直執行,要不然就需要把這個函式掛在遠端雲伺服器,我正在研究應該怎麼弄。

while

true

: schedule.run_pending(

) time.sleep(1)

#while true可以讓程式在不終止的前提下一直執行下去

固定時間倒計時

我所說的這個固定時間是每天晚上20 45,然後根據這個20 45設定倒計時。下面貼 html 距離銷售還剩餘 css 我不貼了 最重要的js 顧名思義 倒計時就是用終點的時間減去現在的時間 這裡呢我將終點的時間封裝成了乙個函式 function if date1 10 return year mon...

crontab固定時間執行用法

cron是乙個linux下的定時執行工具,可以在無需人工干預的情況下執行作業。1 直接用crontab命令編輯 cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些引數與說明 crontab u 設定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數 ...

Timer定時器每天的固定時間執行

在網上看了好多介紹定時任務的方法,但是在使用的時候,如果當前時間是9 00,定時任務執行時間是8 59 就會造成在9點執行的程式的時候直接執行定時器中的方法。tip 定時器超時還執行。如下 解決了這個問題 public class sandtimer timer t new timer timert...