Py天气爬虫+邮件发送

天气预报+图片

1

很久以前写的python天气预报+邮件发送,API调用的和风天气.

# -*- coding: utf-8 -*-

import urllib.request,urllib.error,urllib.parse, json

import os

import time

import smtplib 

from email.mime.text import MIMEText

from email.utils import formataddr

import imp
my_sender='hk_snow@yeah.net' 

my_user='hk_snow@yeah.net'





#调用和风天气的API

url = 'https://free-api.heweather.com/x3/weather?cityid=CN101051303&key=90fd63b92ea24a8bac08f800a7a0e2ff'

req = urllib.request.Request(url)

resp = urllib.request.urlopen(req).read()



#将JSON转化为Python的数据结构

json_data = json.loads(resp)

data = json_data['HeWeather data service 3.0'][0]



#获取PM2.5的值

pm25 = data['aqi']['city']['pm25']

#获取当前时间

timetxt=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

#获取空气质量

air_quality = data['aqi']['city']['qlty']



#获取城市

city = data['basic']['city']



#获取现在的天气、温度、体感温度、风向、风力等级

now_weather = data['now']['cond']['txt']

now_tmp = data['now']['tmp']

now_fl = data['now']['fl']

now_wind_dir = data['now']['wind']['dir']

now_wind_sc = data['now']['wind']['sc']



#今天的天气

today = data['daily_forecast'][0]

weather_day = today['cond']['txt_d']

weather_night = today['cond']['txt_n']

tmp_high = today['tmp']['max']

tmp_low = today['tmp']['min']

wind_dir = today['wind']['dir']

wind_sc = today['wind']['sc']



#天气建议



#舒适度

comf = data['suggestion']['comf']['brf']

comf_txt = data['suggestion']['comf']['txt']



#流感指数

flu = data['suggestion']['flu']['brf']

flu_txt = data['suggestion']['flu']['txt']



#穿衣指数

drsg = data['suggestion']['drsg']['brf']

drsg_txt = data['suggestion']['drsg']['txt']

part1 = "当前时间:"+timetxt+"\n"+"现在外面的天气:" + now_weather+"   "+"当前温度:"+now_tmp+"   "+"体感温度:"+now_fl+"   "+"现在风向"+now_wind_dir+","+now_wind_sc+"级风。"



part2="\n今天白天天气:"+weather_day+"   "+"夜间天气:"+weather_night+"   "+"最高气温:"+tmp_high+"   "+"最低气温:"+tmp_low

part3="\n"+drsg_txt

part4="\n"+flu_txt



#all="\n"+part1+"\n"+part2+"\n"+part3+"\n"+part4

all="<p>"+part1+"</p>"+"\n<p>"+part2+"</p>"+"\n<p>"+part3+"</p>"+"\n<p>"+part4+"</p>"

print(all+"\n")

#发送邮件

def mail():

  ret=True

  try:

    msg=MIMEText(all+'\n<html><body><img src="https://images2017.cnblogs.com/blog/1262814/201710/1262814-20171022164916131-63398347.jpg" alt="imageid"></body></html>','html','utf-8')

     

    msg['Subject']=timetxt+"天气"

 

    server=smtplib.SMTP("smtp.yeah.net",25) 

    server.login(my_sender,"密码")  

    server.sendmail(my_sender,[my_user,],msg.as_string())  

    server.quit()  

  except Exception:  

    ret=False

  return ret

 

ret=mail()

if ret:

  print("发送成功") 

else:

  print("发送失败")
  

代码是py3的,有很多代码是参照别人的爬虫代码+百度拼凑而成的