python查天气预报_Python爬虫获取最近七天天气预报信息

#encoding:utf-8

import requests

import psycopg2

import datetime

import re

from bs4 import BeautifulSoup

from apscheduler.schedulers.background import BackgroundScheduler

#获取最近七天天气预报方法

def weatherPrediction():

cityid = "57494"

urls = ["https://tianqi.2345.com/today-"+cityid+".htm",

"https://tianqi.2345.com/tomorrow-"+cityid+".htm",

"https://tianqi.2345.com/third-"+cityid+".htm",

"https://tianqi.2345.com/fourth-"+cityid+".htm",

"https://tianqi.2345.com/fifth-"+cityid+".htm",

"https://tianqi.2345.com/sixth-"+cityid+".htm",

"https://tianqi.2345.com/seventh-"+cityid+".htm"]

for url in urls:

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')

nowDate = datetime.datetime.now() # 当前日期

weatherDate = ''

if "today" in url:

weatherDate = nowDate.strftime('%Y-%m-%d')

elif "tomorrow" in url:

weatherDate = (nowDate + datetime.timedelta(days=1)).strftime('%Y-%m-%d') # 明天

elif "third" in url:

weatherDate = (nowDate + datetime.timedelta(days=2)).strftime('%Y-%m-%d') # 第三天

elif "fourth" in url:

weatherDate = (nowDate + datetime.timedelta(days=3)).strftime('%Y-%m-%d') # 第四天

elif "fifth" in url:

weatherDate = (nowDate + datetime.timedelta(days=4)).strftime('%Y-%m-%d') # 第五天

elif "sixth" in url:

weatherDate = (nowDate + datetime.timedelta(days=5)).strftime('%Y-%m-%d') # 第六天

elif "seventh" in url:

weatherDate = (nowDate + datetime.timedelta(days=6)).strftime('%Y-%m-%d') # 第七天

# -----------------------------------------天气预报基本信息开始-----------------------------------------

tianqi_list = soup.find_all("span", class_="phrase")

day_tianqi = tianqi_list[0].getText()

night_tianqi = tianqi_list[1].getText() # 天气状况

tianqi = ''

if day_tianqi == night_tianqi:

tianqi = day_tianqi

else:

tianqi = day_tianqi + "~" + night_tianqi

temp_list = soup.find_all("span", class_="temperature")

day_temp = temp_list[0].getText()

night_temp = temp_list[1].getText()

max_temp = re.findall("\d+", day_temp)[0] # 最高温

min_temp = re.findall("\d+", night_temp)[0] # 最低温

# print(weatherDate +" 天气:" + tianqi +"," + " 最高温:" + max_temp + " , " + "最低温:"+min_temp)

# -----------------------------------------天气预报基本信息结束-----------------------------------------

# -----------------------------------------天气预报额外信息开始-----------------------------------------

other_list = soup.find_all("ul", class_="parameter")[0].contents

for other in other_list:

print(other.b.getText() + " : " + other.i.getText())

# -----------------------------------------天气预报额外信息结束-----------------------------------------

# -----------------------------------------每天定时更新天气预报信息-----------------------------------------

scherduler = BackgroundScheduler()

scherduler.add_job(weatherPrediction,'interval',minutes=2)

scherduler.start()

# ----------------------------------------爬虫获取失败的提醒机制,短信/邮件,以及切换api获取天气预报信息-----------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值