python获取多个地区当天的数据及未来四十天的数据
时间: 2024-03-22 21:37:21 浏览: 47
获取多个地区的当天和未来四十天的气象数据,可以使用requests库和BeautifulSoup库。
首先,需要准备一个包含多个地区编码的列表,如下所示:
```
cities = ['101010100', '101020100', '101030100'] # 北京、上海、广州的城市编码
```
然后,可以使用循环遍历这个列表,分别获取每个城市的气象数据。以下是获取单个城市气象数据的示例代码:
```
def get_weather(city_code):
url = f'http://www.weather.com.cn/weather/{city_code}.shtml' # 根据城市编码构造URL
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
html = response.content.decode('utf-8')
soup = BeautifulSoup(html, 'html.parser')
today = soup.find('div', class_='t').find('li')
weather = today.find('p', class_='wea').text # 天气状况
temperature = today.find('p', class_='tem').find_all('span') # 温度
temperature_high = temperature[0].text.strip() # 最高温度
temperature_low = temperature[1].text.strip() # 最低温度
wind = today.find('p', class_='win').find('span').text # 风向风力
future_days = soup.find('div', id='7d')
future_data = []
for day in future_days.find_all('li'):
date = day.find('h1').text # 日期
weather = day.find_all('p')[0].text # 天气状况
temperature = day.find_all('p')[1].find_all('span') # 温度
temperature_high = temperature[0].text # 最高温度
temperature_low = temperature[-1].text # 最低温度
wind = day.find_all('p')[2].find('span').text # 风向风力
future_data.append({'date': date, 'weather': weather, 'temperature_high': temperature_high, 'temperature_low': temperature_low, 'wind': wind})
return {'weather': weather, 'temperature_high': temperature_high, 'temperature_low': temperature_low, 'wind': wind, 'future_data': future_data}
```
在获取单个城市的气象数据之后,可以使用循环遍历城市列表,依次获取每个城市的气象数据。以下是获取多个城市气象数据的示例代码:
```
weather_data = []
for city_code in cities:
city_data = get_weather(city_code)
weather_data.append(city_data)
```
以上代码会输出一个列表,其中每个元素都是一个字典,包含了一个城市的当天和未来四十天的气象数据。可以使用类似以下的代码,输出某个城市的气象数据:
```
print(weather_data[0]['future_data']) # 北京市未来四十天的气象数据
```
希望这个示例能够帮助你获取多个地区的气象数据。
阅读全文