Python簡單程序爬取天氣信息,定時發郵件給朋友【高薪必學】




前段時間看到了這個博客。
https://blog.csdn.net/weixin_45081575/article/details/102886718。
他用了request模塊,這不巧了么,正好我剛用過。
他有了smtp模塊,這不巧了么,正好我剛用過。
定時發送郵件,這不巧了么,我不會 。
PS:另外很多人在學習Python的過程中,往往因為沒有好的教程或者沒人指導從而導致自己容易放棄,為此我建了個Python全棧開發交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,里面有最新Python教程項目可拿,不懂的問題有老司機解決哦,一起相互監督共同進步

整體思路:
Python語言封裝了很多模塊幫助你進行通信,所以寫起來相對簡單。、

1、https://dev.heweather.com/docs/api/weather和風天氣提供了獲取天氣信息的接口,通過url請求得到json格式的數據。具體用法可以查看鏈接的api開發文檔。
比如我要獲得鄭州此時的天氣信息,請求方式如下:

https://free-api.heweather.net/s6/weather/now?location=zhengzhou&key=8a92371afde5490c9ecf3e9346ff189a

# 得到數據
def get_sky():
url='https://free-api.heweather.net/s6/weather/now?location=zhengzhou&key=8a92371afde5490c9ecf3e9346ff189a'
r=requests.get(url)
now=json.loads(r.text)
# print(now)

a=now['HeWeather6'][0]['basic']
b=now['HeWeather6'][0]['now']
stat=''
stat+="省份:%s<br>"%a['admin_area']
stat+='城市:%s<br>'%(a['location'])
stat+='雲量: %s<br>'%(b['cloud'])
stat+='能見度: %s℃<br>'%(b['vis'])
stat+='體感溫度: %s℃<br>'%(b['fl'])
stat+='溫度: %s<br>'%(b['tmp'])
stat+='風力: %s<br>'%(b['wind_sc'])
stat+='風向: %s<br>'%(b['wind_dir'])

return stat
通過text請求得到頁面信息之后,根據返回的json格式解析出每個對應的信息。

2、利用smtp模塊發送郵件,這里弄的比較簡單,沒有上面那個博客中用到csv文件,他添加了附件,又調用了別的對郵件封裝添加附件的函數。這里只用了簡單的傳字符串。

# 郵件傳輸
def smtp_tran(data):
print(data)
msg=MIMEText(data,'html','utf-8')
HOST='smtp.qq.com'
SUBJECT='大哥你的天氣情況到了'
FROM='你的qq@qq.com'
TO='你的qq@qq.com'
msg['Subject']=SUBJECT
msg['From']=FROM
msg['To']=TO
server=smtplib.SMTP(HOST,25)
server.set_debuglevel(1) #打印出傳遞過程
server.login(FROM,'授權碼') #這里填寫你郵箱的授權碼
server.sendmail(FROM,[TO],msg.as_string())
server.quit()
利用smtp模塊封裝好的函數就行,直接調用。值得注意的一點是,163,qq等smtp服務需要授權碼而不是密碼,授權碼是什么可以百度。

3、完整代碼

# 用提供好的api爬取天氣數據,然后發送給郵箱
import requests
import json
from email.mime.text import MIMEText
import smtplib
# 得到數據
def get_sky():
url='https://free-api.heweather.net/s6/weather/now?location=zhengzhou&key=8a92371afde5490c9ecf3e9346ff189a'
r=requests.get(url)
now=json.loads(r.text)
# print(now)
a=now['HeWeather6'][0]['basic']
b=now['HeWeather6'][0]['now']
stat=''
stat+="省份:%s<br>"%a['admin_area']
stat+='城市:%s<br>'%(a['location'])
stat+='雲量: %s<br>'%(b['cloud'])
stat+='能見度: %s<br>'%(b['vis'])
stat+='體感溫度: %s℃<br>'%(b['fl'])
stat+='溫度: %s℃<br>'%(b['tmp'])
stat+='風力: %s<br>'%(b['wind_sc'])
stat+='風向: %s<br>'%(b['wind_dir'])

return stat

# 郵件傳輸
def smtp_tran(data):
print(data)
msg=MIMEText(data,'html','utf-8')
HOST='smtp.qq.com'
SUBJECT='大哥你的天氣情況到了'
FROM='qq@qq.com'
TO='qq@qq.com'
msg['Subject']=SUBJECT
msg['From']=FROM
msg['To']=TO
server=smtplib.SMTP(HOST,25)
server.set_debuglevel(1)
server.login(FROM,'yqqrkjmvsiffeaha')
server.sendmail(FROM,[TO],msg.as_string())
server.quit()
smtp_tran(get_sky())
# print(get_sky(),end='')

[To]里面可填寫多個郵箱,同時發送多個郵件。

4、此時可以運行發送郵件了,定時發送的思路就是建立個批處理文件,把運行這個代碼的語句放進去,每次運行這個批處理文件就等於運行了這個文件。

批處理文件就是存一堆命令的文件。
打開任務計划,然后創建任務,定義操作是運行這個批處理文件,觸發器是每天早上八點,當然要保證電腦開着。這種方法是Windows的。
如圖所示:


如下建立好的:


5、Finally,每天早上八點起得來的話,會發的。
——另外很多人在學習Python的過程中,往往因為沒有好的教程或者沒人指導從而導致自己容易放棄,為此我建了個Python全棧開發交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,里面有最新Python教程項目可拿,不懂的問題有老司機解決哦,一起相互監督共同進步

本文的文字及圖片來源於網絡加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM