给我用python写一个简单天气预报的管理系统,数据从天气网爬取,爬取五天前和五天后的数据,请给我比较完整的代码,并写好注释
时间: 2024-02-19 12:02:11 浏览: 118
好的,以下是一个简单的天气预报管理系统的Python代码,注释已经写好:
```python
import requests
from bs4 import BeautifulSoup
from datetime import datetime, timedelta
# 爬取指定日期的天气数据
def get_weather(date):
# 根据日期计算URL
url_date = date.strftime('%Y%m%d')
url = 'http://www.tianqihoubao.com/lishi/shanghai/{}.html'.format(url_date)
# 发送请求并解析HTML
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
# 获取表格中的数据
table = soup.find('table', {'class': 'b'})
rows = table.findAll('tr')[1:]
# 将数据保存为字典
data = {}
for row in rows:
cols = row.findAll('td')
time = cols[0].text.strip()
weather = cols[1]['title'].strip()
temperature = cols[2].text.strip()
wind_direction = cols[3].text.strip()
wind_speed = cols[4].text.strip()
data[time] = {
'weather': weather,
'temperature': temperature,
'wind_direction': wind_direction,
'wind_speed': wind_speed
}
return data
# 获取五天前到五天后的天气数据
weather_data = {}
today = datetime.today()
for i in range(-5, 6):
date = today + timedelta(days=i)
weather_data[date.strftime('%Y-%m-%d')] = get_weather(date)
# 打印天气数据
for date, data in weather_data.items():
print(date)
for time, weather in data.items():
print('{}: {} {} {} {}'.format(time, weather['weather'], weather['temperature'], weather['wind_direction'], weather['wind_speed']))
```
这个代码使用了 requests 和 Beautiful Soup 库来爬取天气数据,并且使用 datetime 库来计算日期。这里爬取的是上海市的天气数据,您可以根据需要修改 URL 中的城市。
阅读全文