1. 程式人生 > 程式設計 >Python定時傳送天氣預報郵件程式碼例項

Python定時傳送天氣預報郵件程式碼例項

這篇文章主要介紹了Python定時傳送天氣預報郵件程式碼例項,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

用python爬蟲爬到的天氣預報,使用smtplib和email模組可以傳送到郵箱,使用schedule模組可以定時傳送。以下是程式碼~

#匯入模組
import requests
from bs4 import BeautifulSoup
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import schedule
import time

#輸入郵箱發件人、收件人以及郵箱的授權碼
account = str(input('請輸入發件人郵箱地址:'))
password = str(input('請輸入郵箱授權碼:'))
receiver = str(input('請輸入收件人郵箱地址:'))

#建立天氣網爬蟲,爬取天氣資訊
def weather_spider():
  #模擬瀏覽器:
  headers={
    'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/71.0.3578.98 Safari/537.36'
    }
  url='http://www.weather.com.cn/weather/101211001.shtml'
  #資料獲取:
  res=requests.get(url,headers=headers)
  res.encoding='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

#傳送郵件的程式碼
def send_email(tem,weather):
  global account,password,receiver
  mailhost='smtp.qq.com'
  qqmail = smtplib.SMTP()
  qqmail.connect(mailhost,25)
  qqmail.login(account,password)
  content= '衢州的天氣是:\n'+tem+weather
  message = MIMEText(content,'plain','utf-8')
  subject = '今日天氣預報from python'
  message['Subject'] = Header(subject,'utf-8')
  try:
    qqmail.sendmail(account,receiver,message.as_string())
    print ('郵件傳送成功')
  except:
    print ('郵件傳送失敗')
  qqmail.quit()

#建立任務
def job():
  print('開始一次任務')
  tem,weather = weather_spider()
  send_email(tem,weather)
  print('任務完成')

#定時傳送
schedule.every().day.at("7:00").do(job) 
while True:
  schedule.run_pending()
  time.sleep(1)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。