import re
import datetime
if __name__ == "__main__":
for y in range(2000,2023):#2000-2022年
for m in range(1,13):#1-12月
list=[]#空列表存数据
if (m > 1):#计算一个月有多少天
days = (datetime.date(y, m, 1)-datetime.date(y, m-1, 1)).days
else:
days = (datetime.date(y, 1, 1) - datetime.date(y-1, 12, 1)).days
url='
https://www.ogimet.com/cgi-bin/gsynres?lang=en&state=Chin&osum=no&fmt=html&ord=REV&ano='\
+str(y)+'&mes='+str(m)+'&day=31&hora=12&ndays=1&Send=send'#获取该月有数据的站点列表
a=requests.get(url).text
for pos in re.finditer('ind=', a):#站点列表中的超链接字符截取获得站点列表名
index=a[pos.end():pos.end()+5]#一个站点
url = '
https://www.ogimet.com/cgi-bin/gsynres?lang=en&ord=DIR&ndays='+str(days+1)\
+'&ano='+str(y)+'&mes='+str(m)+'&day'+str(days)+'&hora=12&ind='+index#一个站点一个月的数据
try:
b=pd.read_html(url)[2]['Temperature (C)']['Avg']#定位到日均温
b = b.drop(b[b == '-----'].index)#去掉空数据
diff = np.mean(np.fabs(np.diff(b.values)))#求差、求绝对值、求平均
print('%d\t%d\t%d\t%.3f'%(y,m,int(index),diff))#可视化
list.append([index,diff])#列表保存数据
except:
continue#获取失败
month_data=pd.DataFrame(list)#列表转为dataframe
month_data.to_csv('D:/'+str(y)+'_'+str(m)+'.txt')#保存到txt,实际是csv