写出用Python 爬取指定城市、年份的天气数据的代码
时间: 2024-06-10 08:06:17 浏览: 98
好的,下面是Python爬取指定城市、年份的天气数据的代码示例:
```python
import requests
from bs4 import BeautifulSoup
def get_weather(city, year):
"""
爬取指定城市、年份的天气数据
:param city: 已知城市的中文名称,如:上海、北京、广州等
:param year: 指定的年份,如:2021、2020等
:return: 包含所有天气数据的列表
"""
# 构造请求的URL
url = f'http://www.tianqihoubao.com/lishi/{city}/month/{year}.html'
# 发起GET请求
response = requests.get(url)
# 解析响应HTML页面
soup = BeautifulSoup(response.content, 'html.parser')
# 找到所有包含天气数据的tr标签
tr_list = soup.find_all('tr', {'class': 'td_bg'})
# 用于保存所有天气数据的列表
weather_list = []
# 遍历所有天气数据的tr标签,并依次提取数据
for tr in tr_list:
# 取出日期数据
date = tr.find('a').text
# 取出天气状况数据
state = tr.find_all('td')[1].text
# 取出最高温度数据
high_temperature = tr.find_all('td')[2].text
# 取出最低温度数据
low_temperature = tr.find_all('td')[3].text
# 整理天气数据的格式,并添加到列表中
weather = f'{date} {state} 最高温度:{high_temperature} 最低温度:{low_temperature}'
weather_list.append(weather)
# 返回所有天气数据的列表
return weather_list
```
使用示例:
```python
# 爬取2021年上海的天气数据
city = '上海'
year = 2021
weather_list = get_weather(city, year)
# 输出所有天气数据
for weather in weather_list:
print(weather)
```
输出示例:
```
2021年12月01日 多云 最高温度:14℃ 最低温度:4℃
2021年12月02日 阴 最高温度:11℃ 最低温度:8℃
2021年12月03日 阴 最高温度:9℃ 最低温度:4℃
2021年12月04日 小雨 最高温度:11℃ 最低温度:5℃
2021年12月05日 小雨 最高温度:9℃ 最低温度:4℃
2021年12月06日 阴天 最高温度:8℃ 最低温度:0℃
2021年12月07日 晴 最高温度:8℃ 最低温度:-1℃
......
```
阅读全文