上一篇(https://zhangphil.blog.youkuaiyun.com/article/details/110357488)已经知道如何获取某个城市的天气预报城市编码,接下来可以通过天气预报接开获取天气json数据:
import pandas as pd
import json
import urllib
def get_weather_data(city_code):
url = f'http://www.weather.com.cn/data/cityinfo/{city_code}.html'
response = urllib.request.urlopen(url)
content = response.read().decode('utf-8')
return content
def search_city_code(city_name):
city_code = '-1'
df = pd.read_json('city_code.json')
for row in df.values:
row_data = row[0]
city_data = row_data['市']
for cd in city_data:
# print(cd['市名'], cd['编码'])
if (city_name == cd['市名'] or cd['市名'] in city_name):
city_code = cd['编码']
break
return city_code
if __name__ == '__main__':
city_name_list = ['北京', '上海', '广州', '深圳', '成都'] # 获取以上五个城市天气数据
for cn in city_name_list:
city_code = search_city_code(cn)
weather_data = get_weather_data(city_code)
json_data = json.loads(weather_data)
print(json_data)
temp1 = json_data['weatherinfo']['temp1'].strip('℃') # 清洗数据,保留纯粹的数字
print(cn, temp1)