arp 是一个可以实时抓取航空METAR和TAF报文的小型程序包,该程序包可以进行单个机场的报文查询,也可以进行实时的抓取和保存、归档。其数据源来自于美国航空天气中心AWC或小飞象航空气象网。
对于国内机场数据来说,小飞象航空气象网的数据完整性要强于AWC,因此本程序默认情况下使用小飞象航空气象网作为数据源,数据源可以在配置文件中进行配置。
该程序包仅支持Python3.x版本,全部使用Python标准库,无需额外安装依赖库,可以直接下载或者使用git
克隆代码库。文件中包含配置文件config.json
, 该文件保存了实时抓取程序的配置, 包括保存路径、归档路径、日志路径以及所要抓取的机场列表信息。使用者可以对其内容进行自定义配置。其默认配置如下:
{
"metar":{
"log_path":"./data/metar/log/",
"archive_path":"./data/metar/archive/",
"buffer_path":"./data/metar/buffer/",
"realtime_path":"./data/metar/realtime/"
},
"taf":{
"log_path":"./data/taf/log/",
"archive_path":"./data/taf/archive/",
"buffer_path":"./data/taf/buffer/",
"realtime_path":"./data/taf/realtime/"
},
"source":"avt7",
"ICAOS":[
"ZBAA", "ZBNY", "ZBTJ", "ZBSJ", "ZBCD", "ZBHD", "ZBDH", "ZBSN",
"ZBZJ", "ZBYN", "ZBCZ", "ZBDT", "ZBLF", "ZBLL", "ZBXZ", "ZBYC",
"ZBHH", "ZBES", "ZBAL", "ZBAR", "ZBYZ", "ZBOW", "ZBCF", "ZBDS",
"ZBEN", "ZBER", "ZBLA", "ZBHZ", "ZBMZ", "ZBTL", "ZBUH", "ZBUC",
"ZBUL", "ZBXH", "ZBZL", "ZYTX", "ZYAS", "ZYCY", "ZYCH", "ZYTL",
"ZYDD", "ZYJZ", "ZYYK", "ZYCC", "ZYBA", "ZYBS", "ZYSQ", "ZYTN",
"ZYYJ", "ZYHB", "ZYDQ", "ZYFY", "ZYHE", "ZYJX", "ZYJD", "ZYJM",
"ZYJS", "ZYMH", "ZYMD", "ZYQQ", "ZYDU", "ZYLD", "ZSSS", "ZSPD",
"ZSNJ", "ZSCG", "ZSSH", "ZSLG", "ZSNT", "ZSWX", "ZSXZ", "ZSYN",
"ZSYA", "ZSOF", "ZSAQ", "ZSJH", "ZSFY", "ZSTX", "ZSHC", "ZSNB",
"ZSJU", "ZSLQ", "ZSWZ", "ZSYW", "ZSZS", "ZSFZ", "ZSLO", "ZSQZ",
"ZSSM", "ZSWY", "ZSAM", "ZSCN", "ZSGZ", "ZSJD", "ZSGS", "ZSSR",
"ZSYC", "ZSJN", "ZSDY", "ZSJG", "ZSLY", "ZSQD", "ZSRZ", "ZSWF",
"ZSWH", "ZSYT", "ZHHH", "ZHES", "ZHSN", "ZHSY", "ZHXF", "ZHYC",
"ZHCC", "ZHLY", "ZHNY", "ZGHA", "ZGCD", "ZGHY", "ZGCJ", "ZGSY",
"ZGLG", "ZGDY", "ZGGG", "ZGFS", "ZGHZ", "ZGOW", "ZGMX", "ZGSZ",
"ZGZJ", "ZGSD", "ZGNN", "ZGBS", "ZGBH", "ZGKL", "ZGHC", "ZGZH",
"ZGWZ", "ZJHK", "ZJQH", "ZJSY", "ZJYX", "ZUCK", "ZUQJ", "ZUWX",
"ZUUU", "ZUHY", "ZUDX", "ZUDC", "ZUKD", "ZUGU", "ZUJZ", "ZULZ",
"ZUMY", "ZUNC", "ZUZH", "ZUXC", "ZUYB", "ZPPP", "ZPBS", "ZPCW",
"ZPDL", "ZPMS", "ZPDQ", "ZPJM", "ZPLJ", "ZPLC", "ZPNL", "ZPSM",
"ZUTC", "ZPWS", "ZPJH", "ZPZT", "ZULS", "ZUAL", "ZUBD", "ZUNZ",
"ZURK", "ZLXY", "ZLHZ", "ZLYA", "ZLYL", "ZLLL", "ZLDH", "ZLXH",
"ZLJQ", "ZLJC", "ZLLN", "ZLQY", "ZLTS", "ZLZY", "ZLIC", "ZLGY",
"ZLZW", "ZWWW", "ZWAK", "ZWAT", "ZWBL", "ZWKN", "ZWFY", "ZWHM",
"ZWTN", "ZWSH", "ZWKM", "ZWKC", "ZWKL", "ZWCM", "ZWSC", "ZWHZ",
"ZWTC", "ZWTP", "ZWNL", "ZWYN", "VHHH", "VMMC", "ZUGY", "ZUAS",
"ZUBJ", "ZUKJ", "ZULB", "ZUNP", "ZUPS", "ZUTR", "ZUYI", "ZUMT",
"ZUZY", "ZLXN", "ZLDL", "ZLGM", "ZLGL", "ZLHX", "ZLYS", "ZUGH",
"RCSS", "RCKH", "RCTP", "RCYU"
]
}
其中log_path是日志保存路径;archive_path是归档路径;realtime_path是实时更新保存路径;buffer_path路径保存缓存文件用于对比更新;source是所抓取数据的数据源,目前支持'avt7'和'awc',默认为'avt7';ICAOS是所要爬取的机场列表,机场名使用ICAO码。 四个路径可以随意配置,若路径不存在则程序会自动创建(有权限的情况下)。 机场列表默认为中国(包含港澳台)236个机场。
对于单个机场信息的查询,按以下示例查询
$ python collecter.py ZBAA metar
该命令是查询机场ZBAA(首都国际机场)的最新METAR报文
同理,若要查询首都机场的最新TAF报文,可以执行
$ python collecter.py ZBAA taf
若想要自动化实时爬取并保存METAR报文数据,可以执行
$ python oparp.py metar
或者在服务器上后台运行
$ nohup python oparp.py metar &
同理要爬取TAF报文只需将metar
换为taf
即可。
执行该命令以后,程序将按照配置文件config.json
中的设置,爬取机场列表里所有机场的METAR报文,并将结果以.json
的格式保存在realtime_path
、buffer_path
和archive_path
路径下。
realtime_path
路径中保存有一个文件:updated_metars.json
,该文件保存的是最新一次查询相较于上一次查询所更新的机场的报文信息。
buffer_path
路径中保存有一个文件:all_metars.json
,该文件保存有所有机场的最新一次返回的报文。
例如某个时次all_metars.json
中保存有全部236个机场的报文信息(有些机场报文缺少则为空字符串):
{
"ZBAA": "METAR ZBAA 180200Z 32002MPS 240V020 CAVOK 05/M13 Q1022 NOSIG=",
"ZBNY": "",
"ZBTJ": "METAR ZBTJ 180200Z 35004MPS CAVOK 07/M11 Q1021 NOSIG=",
"ZBSJ": "METAR ZBSJ 180200Z 30002MPS 260V330 5000 HZ NSC 05/M11 Q1021 NOSIG=",
"ZBCD": "METAR ZBCD 180200Z 33004MPS 290V010 CAVOK M03/M13 Q1018 NOSIG=",
"ZBHD": "METAR ZBHD 180200Z VRB01MPS 4000 HZ NSC 06/M08 Q1021 NOSIG=",
"ZBDH": "METAR ZBDH 180200Z 34005MPS CAVOK 04/M12 Q1020 NOSIG=",
"ZBSN": "METAR ZBSN 180200Z 28002MPS 4000 HZ NSC 02/M14 Q1021 NOSIG=",
"ZBZJ": "",
"ZBYN": "METAR ZBYN 180200Z VRB01MPS 6000 NSC M01/M12 Q1021 NOSIG=",
"ZBCZ": "METAR ZBCZ 180200Z 01002MPS 330V060 CAVOK M00/M09 Q1021 NOSIG=",
"ZBDT": "METAR ZBDT 180200Z 31002MPS 250V350 CAVOK M04/M13 Q1019 NOSIG=",
"ZBLF": "METAR ZBLF 180200Z 31002MPS 3000 HZ NSC M02/M09 Q1023 NOSIG=",
"ZBLL": "METAR ZBLL 180200Z 00000MPS CAVOK M04/M12 Q1021 NOSIG=",
"ZBXZ": "METAR ZBXZ 180200Z 00000MPS 7000 NSC M03/M12 Q1021 NOSIG=",
"ZBYC": "METAR ZBYC 180200Z 09003MPS 070V130 3100 HZ NSC 01/M08 Q1024 NOSIG=",
"ZBHH": "METAR ZBHH 180200Z 05003MPS CAVOK M07/M14 Q1020 NOSIG=",
"ZBES": "METAR ZBES 180200Z 26003MPS 9999 SCT020 M15/M17 Q1009 NOSIG=",
"ZBAL": "METAR ZBAL 180200Z 32002MPS 280V040 CAVOK 00/M20 Q1022 NOSIG=",
"ZBAR": "METAR ZBAR 180200Z 32004MPS CAVOK M08/M16 Q1023=",
"ZBYZ": "METAR ZBYZ 180200Z VRB01MPS 6000 NSC M09/M13 Q1018 NOSIG=",
"ZBOW": "METAR ZBOW 180200Z VRB01MPS CAVOK M05/M13 Q1020 NOSIG=",
"ZBCF": "METAR ZBCF 180200Z 25003MPS 220V300 CAVOK M03/M14 Q1018 NOSIG=",
"ZBDS": "METAR ZBDS 180200Z 29004MPS CAVOK M04/M16 Q1019 NOSIG=",
"ZBEN": "METAR ZBEN 180200Z 27005MPS CAVOK M08/M15 Q1023=",
"ZBER": "METAR ZBER 180200Z 22004MPS 9999 FEW030 M11/M14 Q1017 NOSIG=",
"ZBLA": "METAR ZBLA 180200Z 24006MPS 9999 BKN033 M14/M17 Q1007 NOSIG=",
"ZBHZ": "METAR ZBHZ 180200Z 29011MPS CAVOK M13/M15 Q1010 NOSIG=",
"ZBMZ": "METAR ZBMZ 180200Z 26005MPS 9999 BKN040 M14/M17 Q1006 NOSIG=",
"ZBTL": "METAR ZBTL 180200Z 31004MPS 270V340 CAVOK M04/M15 Q1018 NOSIG=",
"ZBUH": "METAR ZBUH 180200Z 18002MPS 130V220 CAVOK M02/M16 Q1021 NOSIG=",
"ZBUC": "METAR ZBUC 180200Z VRB01MPS 9999 FEW036 M10/M16 Q1017 NOSIG=",
"ZBUL": "METAR ZBUL 180200Z 28005MPS CAVOK M08/M16 Q1013 NOSIG=",
"ZBXH": "METAR ZBXH 180200Z 17001MPS CAVOK M11/M17 Q1016 NOSIG=",
"ZBZL": "METAR ZBZL 180200Z AUTO VRB01MPS 6000 /// ////// M13/M17 Q1011 NOSIG=",
"ZYTX": "METAR ZYTX 180200Z 29003MPS CAVOK M00/M11 Q1018 NOSIG=",
"ZYAS": "METAR ZYAS 180200Z 02006MPS CAVOK 02/M12 Q1019 NOSIG=",
"ZYCY": "METAR ZYCY 180200Z 15002MPS 120V230 CAVOK M01/M14 Q1020 NOSIG=",
"ZYCH": "METAR ZYCH 180200Z 26007MPS 8000 NSC 07/M00 Q1018 NOSIG=",
"ZYTL": "METAR ZYTL 180200Z 26008MPS CAVOK 08/M01 Q1019 NOSIG=",
"ZYDD": "",
"ZYJZ": "METAR ZYJZ 180200Z 02002MPS 360V060 9000 NSC 01/M13 Q1020 NOSIG=",
"ZYYK": "METAR ZYYK 180200Z 01003MPS CAVOK 02/M05 Q1019 NOSIG=",
"ZYCC": "METAR ZYCC 180200Z 30002MPS 240V020 CAVOK M07/M18 Q1016 NOSIG=",
"ZYBA": "METAR ZYBA 180200Z AUTO 27004MPS 9999 // ////// M08/M14 Q1015=",
"ZYBS": "METAR ZYBS 180200Z 21003MPS 9999 SCT026 M07/M14 Q1011 NOSIG=",
"ZYSQ": "METAR ZYSQ 180200Z 26003MPS CAVOK M08/M15 Q1016 NOSIG=",
"ZYTN": "METAR ZYTN 180200Z 00000MPS 8000 NSC M05/M11 Q1015 NOSIG=",
"ZYYJ": "METAR ZYYJ 180200Z 26007MPS 9999 SCT040 M02/M12 Q1013 NOSIG=",
"ZYHB": "METAR ZYHB 180200Z 24004MPS CAVOK M10/M17 Q1015 NOSIG=",
"ZYDQ": "METAR ZYDQ 180200Z 28003MPS CAVOK M10/M17 Q1013 NOSIG=",
"ZYFY": "METAR ZYFY 180200Z 27006MPS CAVOK M15/M19 Q1006 NOSIG=",
"ZYHE": "METAR ZYHE 180200Z 24002MPS 210V280 9999 FEW033 M16/M20 Q1005 NOSIG=",
"ZYJX": "METAR ZYJX 180200Z 29008MPS 9999 SCT040 M05/M13 Q1008 NOSIG=",
"ZYJD": "METAR ZYJD 180200Z VRB01MPS 9999 SCT040 M22/M25 Q1005 NOSIG=",
"ZYJM": "METAR ZYJM 180200Z 21002MPS 170V250 CAVOK M08/M12 Q1009 NOSIG=",
"ZYJS": "METAR ZYJS 180200Z 25006MPS 9999 FEW033 M11/M16 Q1008 NOSIG=",
"ZYMH": "METAR ZYMH 180200Z 24004MPS 190V270 9999 FEW030 M18/M23 Q0997 NOSIG=",
"ZYMD": "METAR ZYMD 180200Z 26004MPS 220V290 CAVOK M06/M16 Q1011 NOSIG=",
"ZYQQ": "METAR ZYQQ 180200Z 29004MPS CAVOK M08/M17 Q1013 NOSIG=",
"ZYDU": "METAR ZYDU 180200Z AUTO 30004MPS 9999 /// ////// M15/M19 Q1010=",
"ZYLD": "METAR ZYLD 180200Z 27006MPS CAVOK M13/M17 Q1008 NOSIG=",
"ZSSS": "METAR ZSSS 180200Z 20004MPS 8000 NSC 12/04 Q1026 NOSIG=",
"ZSPD": "METAR ZSPD 180200Z 23004MPS 4500 HZ NSC 11/06 Q1026 NOSIG=",
"ZSNJ": "METAR ZSNJ 180200Z 24004MPS 7000 NSC 11/03 Q1025 NOSIG=",
"ZSCG": "METAR ZSCG 180200Z 23003MPS 6000 NSC 09/03 Q1025 NOSIG=",
"ZSSH": "METAR ZSSH 180200Z 23003MPS 4500 HZ NSC 08/01 Q1023 NOSIG=",
"ZSLG": "METAR ZSLG 180200Z 24003MPS 4100 HZ NSC 06/01 Q1023 NOSIG=",
"ZSNT": "METAR ZSNT 180200Z 22003MPS 3300 HZ NSC 10/04 Q1025 NOSIG=",
"ZSWX": "METAR ZSWX 180200Z 21003MPS CAVOK 10/03 Q1026 NOSIG=",
"ZSXZ": "METAR ZSXZ 180200Z 23003MPS 200V270 3500 HZ NSC 07/02 Q1023 NOSIG=",
"ZSYN": "METAR ZSYN 180200Z 21003MPS 4000 HZ NSC 09/01 Q1024 NOSIG=",
"ZSYA": "METAR ZSYA 180200Z 20003MPS 170V230 3500 HZ NSC 08/02 Q1024 NOSIG=",
"ZSOF": "METAR ZSOF 180200Z 16002MPS 5000 HZ NSC 10/04 Q1024 NOSIG=",
"ZSAQ": "METAR ZSAQ 180200Z 26004MPS 5000 HZ NSC 08/04 Q1026 NOSIG=",
"ZSJH": "METAR ZSJH 180200Z VRB01MPS 8000 NSC 09/03 Q1025 NOSIG=",
"ZSFY": "METAR ZSFY 180200Z 24004MPS 5000 HZ NSC 10/03 Q1023 NOSIG=",
"ZSTX": "METAR ZSTX 180200Z 00000MPS 0300 R13/0750N FG VV003 02/02 Q1028 NOSIG=",
"ZSHC": "METAR ZSHC 180200Z 25003MPS 5000 HZ NSC 10/03 Q1026 NOSIG=",
"ZSNB": "METAR ZSNB 180200Z 17002MPS 140V210 5000 HZ NSC 10/04 Q1027 NOSIG=",
"ZSJU": "METAR ZSJU 180200Z VRB01MPS CAVOK 07/03 Q1027 NOSIG=",
"ZSLQ": "METAR ZSLQ 180200Z 00000MPS CAVOK 12/02 Q1027 NOSIG=",
"ZSWZ": "METAR ZSWZ 180200Z 33003MPS CAVOK 13/02 Q1027 NOSIG=",
"ZSYW": "METAR ZSYW 180200Z 20002MPS 5000 BR NSC 08/04 Q1027 NOSIG=",
"ZSZS": "METAR ZSZS 180200Z 25004MPS CAVOK 13/06 Q1026 NOSIG=",
"ZSFZ": "METAR ZSFZ 180200Z 36002MPS 290V050 CAVOK 16/04 Q1027 NOSIG=",
"ZSLO": "METAR ZSLO 180200Z 34002MPS 310V020 9000 NSC 08/04 Q1027 NOSIG=",
"ZSQZ": "METAR ZSQZ 180200Z 35003MPS 300V040 CAVOK 17/05 Q1026 NOSIG=",
"ZSSM": "METAR ZSSM 180200Z AUTO VRB01MPS 0300 R06/0325V0500N // ////// 04/04 Q1029=",
"ZSWY": "METAR ZSWY 180200Z VRB01MPS 1800 BR FEW004 BKN040 03/03 Q1029 NOSIG=",
"ZSAM": "METAR ZSAM 180200Z 03004MPS 350V050 CAVOK 18/03 Q1026 NOSIG=",
"ZSCN": "METAR ZSCN 180200Z VRB01MPS 0150 R03/0300N FG VV002 04/04 Q1027 BECMG TL0250 0800 SCT003=",
"ZSGZ": "METAR ZSGZ 180200Z 08001MPS 0300 FG VV002 05/04 Q1028 BECMG TL0240 1000 BR NSC=",
"ZSJD": "METAR ZSJD 180200Z 08003MPS 3000 BR BKN015 04/04 Q1028 NOSIG=",
"ZSGS": "METAR ZSGS 180200Z 00000MPS 0700 FG SCT003 04/04 Q1027 NOSIG=",
"ZSSR": "METAR COR ZSSR 180200Z 07002MPS 020V120 CAVOK 06/02 Q1027 NOSIG=",
"ZSYC": "METAR ZSYC 180200Z VRB01MPS 8000 NSC 06/05 Q1026 NOSIG=",
"ZSJN": "METAR ZSJN 180200Z VRB01MPS CAVOK 07/M03 Q1021 NOSIG=",
"ZSDY": "METAR ZSDY 180200Z 28003MPS 6000 NSC 04/M04 Q1021 NOSIG=",
"ZSJG": "METAR ZSJG 180200Z VRB01MPS 3500 HZ NSC 05/M00 Q1022 NOSIG=",
"ZSLY": "METAR ZSLY 180200Z 21003MPS 2400 HZ NSC 06/M00 Q1022 NOSIG=",
"ZSQD": "METAR ZSQD 180200Z 19003MPS 5000 HZ NSC 09/M05 Q1021 NOSIG=",
"ZSRZ": "METAR ZSRZ 180200Z VRB01MPS 6000 NSC 05/01 Q1022 NOSIG=",
"ZSWF": "METAR ZSWF 180200Z VRB01MPS 6000 NSC 06/M03 Q1021 NOSIG=",
"ZSWH": "METAR ZSWH 180200Z VRB01MPS CAVOK 05/M05 Q1021 NOSIG=",
"ZSYT": "METAR ZSYT 180200Z 22004MPS CAVOK 06/M04 Q1020 NOSIG=",
"ZHHH": "METAR ZHHH 180200Z 10003MPS 060V120 4000 HZ NSC 10/05 Q1024 NOSIG=",
"ZHES": "SPECI ZHES 180220Z 00000MPS 0800 R01/0800V1300U FG FEW003 SCT010 OVC050 02/02 Q1027 BECMG FM0300 1500 BR=",
"ZHSN": "METAR ZHSN 180200Z 24004MPS CAVOK 05/M11 Q1026 NOSIG=",
"ZHSY": "METAR ZHSY 180200Z VRB01MPS CAVOK 06/01 Q1023 NOSIG=",
"ZHXF": "METAR ZHXF 180200Z 20002MPS 170V230 2300 BR NSC 06/03 Q1023 NOSIG=",
"ZHYC": "METAR ZHYC 180200Z VRB01MPS 4000 HZ NSC 10/05 Q1024 NOSIG=",
"ZHCC": "METAR ZHCC 180200Z 28004MPS CAVOK 12/M08 Q1021 NOSIG=",
"ZHLY": "METAR ZHLY 180200Z 20002MPS 170V230 CAVOK 06/M07 Q1022 NOSIG=",
"ZHNY": "METAR ZHNY 180200Z 21002MPS 3000 HZ NSC 06/01 Q1023 NOSIG=",
"ZGHA": "METAR ZGHA 180200Z 17002MPS 130V200 9000 NSC 10/04 Q1025 NOSIG=",
"ZGCD": "METAR ZGCD 180200Z 00000MPS CAVOK 08/05 Q1024 NOSIG=",
"ZGHY": "METAR ZGHY 180200Z 16002MPS 130V190 5000 BR NSC 08/05 Q1026 NOSIG=",
"ZGCJ": "METAR ZGCJ 180200Z 00000MPS CAVOK 09/06 Q1024 NOSIG=",
"ZGSY": "METAR ZGSY 180200Z VRB01MPS CAVOK 09/04 Q1025 NOSIG=",
"ZGLG": "METAR ZGLG 180200Z VRB01MPS CAVOK 09/07 Q1026 NOSIG=",
"ZGDY": "METAR ZGDY 180200Z 00000MPS CAVOK 07/04 Q1025 NOSIG=",
"ZGGG": "METAR ZGGG 180200Z VRB01MPS CAVOK 15/03 Q1025 NOSIG=",
"ZGFS": "",
"ZGHZ": "METAR ZGHZ 180200Z 35004MPS 320V020 CAVOK 14/07 Q1025 NOSIG=",
"ZGOW": "METAR ZGOW 180200Z VRB01MPS CAVOK 16/06 Q1026 NOSIG=",
"ZGMX": "METAR ZGMX 180200Z VRB01MPS CAVOK 12/07 Q1026 NOSIG=",
"ZGSZ": "METAR ZGSZ 180200Z 03004MPS CAVOK 18/06 Q1024 NOSIG=",
"ZGZJ": "METAR ZGZJ 180200Z 06003MPS 020V110 9999 FEW040 20/08 Q1023 NOSIG=",
"ZGSD": "METAR ZGSD 180200Z 04004MPS CAVOK 20/08 Q1024 NOSIG=",
"ZGNN": "METAR ZGNN 180200Z VRB01MPS CAVOK 15/10 Q1024 NOSIG=",
"ZGBS": "METAR ZGBS 180200Z 00000MPS 9999 BKN036 13/09 Q1024 NOSIG=",
"ZGBH": "METAR ZGBH 180200Z 08002MPS 330V130 CAVOK 18/11 Q1023 NOSIG=",
"ZGKL": "METAR ZGKL 180200Z VRB01MPS 8000 NSC 13/05 Q1025 NOSIG=",
"ZGHC": "METAR ZGHC 180200Z VRB01MPS 9999 SCT060 12/06 Q1025 NOSIG=",
"ZGZH": "METAR ZGZH 180200Z 35001MPS 6000 BKN043 12/10 Q1024 NOSIG=",
"ZGWZ": "METAR ZGWZ 180200Z 33002MPS 310V020 9999 FEW040 11/08 Q1025 NOSIG=",
"ZJHK": "METAR ZJHK 180200Z 05005MPS 9999 FEW023 22/17 Q1022 NOSIG=",
"ZJQH": "METAR ZJQH 180200Z 34004MPS 8000 OVC023 19/16 Q1022 NOSIG=",
"ZJSY": "METAR ZJSY 180200Z 20002MPS 160V240 CAVOK 24/16 Q1020 NOSIG=",
"ZJYX": "METAR ZJYX 180200Z 04007MPS 9999 BKN016 25/25 Q1019 NOSIG=",
"ZUCK": "METAR ZUCK 180200Z 16002MPS 3000 BR NSC 07/05 Q1024 TEMPO 2500 BR=",
"ZUQJ": "METAR ZUQJ 180200Z VRB01MPS 3000 BR FEW005 04/02 Q1025 NOSIG=",
"ZUWX": "METAR ZUWX 180200Z 02003MPS 1000 R29/1000N BR FEW003 OVC040 04/04 Q1024 NOSIG=",
"ZUUU": "METAR ZUUU 180200Z 23001MPS 2300 BR FEW050 08/06 Q1025 BECMG TL0300 3000=",
"ZUHY": "METAR ZUHY 180200Z AUTO 00000MPS 9999 /// ////// M11/M14 Q1029 NOSIG=",
"ZUDX": "METAR ZUDX 180200Z 01002MPS 2300 BR FEW004 SCT030 OVC050 05/04 Q1025 NOSIG=",
"ZUDC": "METAR ZUDC 180200Z 24003MPS 4000 -SN SCT020 BKN030 M07/M09 Q1032 NOSIG=",
"ZUKD": "METAR ZUKD 180200Z 17002MPS 130V240 CAVOK M02/M17 Q1030 NOSIG=",
"ZUGU": "METAR ZUGU 180200Z 00000MPS 0900 FG SCT003 SCT004 03/02 Q1025 BECMG TL0330 1500 BR=",
"ZUJZ": "METAR ZUJZ 180200Z AUTO 00000MPS 9999 // ////// M07/M19 Q1027 NOSIG=",
"ZULZ": "METAR ZULZ 180200Z VRB01MPS 1200 R07/1500N BR NSC 08/07 Q1024 BECMG 1600=",
"ZUMY": "METAR ZUMY 180200Z 00000MPS 1500 BR FEW007 SCT040 08/07 Q1024 NOSIG=",
"ZUNC": "METAR ZUNC 180200Z VRB01MPS 0250 R06/0375N FG VV016 04/04 Q1025 NOSIG=",
"ZUZH": "METAR ZUZH 180200Z 13002MPS 080V160 9999 SCT040 12/05 Q1023 NOSIG=",
"ZUXC": "METAR ZUXC 180200Z 00000MPS CAVOK 10/05 Q1021 NOSIG=",
"ZUYB": "METAR ZUYB 180200Z VRB01MPS 3200 BR NSC 09/08 Q1025 NOSIG=",
"ZPPP": "METAR ZPPP 180200Z 21007MPS 8000 FEW010 SCT023 12/09 Q1026 NOSIG=",
"ZPBS": "METAR ZPBS 180200Z VRB01MPS 9999 BKN030 13/08 Q1025 NOSIG=",
"ZPCW": "METAR ZPCW 180200Z 24003MPS 180V250 9999 BKN050 15/12 Q1026 NOSIG=",
"ZPDL": "METAR ZPDL 180200Z 13006MPS 9999 FEW030 SCT040 13/04 Q1025 NOSIG=",
"ZPMS": "METAR ZPMS 180200Z 03002MPS 340V100 7000 FEW020 18/16 Q1021 NOSIG=",
"ZPDQ": "METAR ZPDQ 180200Z VRB01MPS 4000 -SHSN FEW010 SCT020 OVC040 01/M04 Q1032 NOSIG=",
"ZPJM": "METAR ZPJM 180200Z 13001MPS 2500 BR SCT004 BKN040 15/15 Q1024 NOSIG=",
"ZPLJ": "METAR ZPLJ 180200Z VRB01MPS 9999 BKN040 BKN083 11/M01 Q1025 NOSIG=",
"ZPLC": "METAR ZPLC 180200Z VRB01MPS 9999 FEW050 14/10 Q1026 NOSIG=",
"ZPNL": "METAR ZPNL 180200Z 20002MPS 140V240 9999 BKN060 04/M12 Q1030 NOSIG=",
"ZPSM": "METAR ZPSM 180200Z 19004MPS 9999 FEW011 BKN023 17/14 Q1024 NOSIG=",
"ZUTC": "",
"ZPWS": "METAR ZPWS 180200Z 18004MPS 9999 SCT009 OVC023 11/09 Q1025 NOSIG=",
"ZPJH": "METAR ZPJH 180200Z 00000MPS 9999 FEW023 BKN050 19/19 Q1021 NOSIG=",
"ZPZT": "METAR ZPZT 180200Z 21001MPS 5000 BR FEW030 08/04 Q1022 NOSIG=",
"ZULS": "METAR ZULS 180200Z VRB01MPS 3500 -SN SCT026 BKN040 OVC050 M04/M05 Q1031 NOSIG=",
"ZUAL": "METAR ZUAL 180200Z 12003MPS 100V160 CAVOK M22/M33 Q1037 NOSIG=",
"ZUBD": "METAR ZUBD 180200Z 14010MPS 9999 -SN FEW040 OVC050 M05/M11 Q1030 NOSIG=",
"ZUNZ": "METAR ZUNZ 180200Z VRB01MPS 9999 SCT040 OVC070 02/M03 Q1029 NOSIG=",
"ZURK": "METAR ZURK 180200Z AUTO 26001MPS 1000 R27/1300 /// ////// M04/M04 Q1029 NOSIG=",
"ZLXY": "METAR ZLXY 180200Z 00000MPS 5000 HZ NSC 03/M06 Q1023 NOSIG=",
"ZLHZ": "METAR ZLHZ 180200Z 00000MPS 0150 R07/0100 FZFG VV003 M00/M00 Q1026 NOSIG=",
"ZLYA": "METAR ZLYA 180200Z VRB01MPS CAVOK M02/M14 Q1021 NOSIG=",
"ZLYL": "METAR ZLYL 180200Z VRB01MPS CAVOK M04/M14 Q1020 NOSIG=",
"ZLLL": "METAR ZLLL 180200Z VRB01MPS CAVOK M05/M16 Q1021 NOSIG=",
"ZLDH": "METAR ZLDH 180200Z VRB01MPS CAVOK M12/M17 Q1023 NOSIG=",
"ZLXH": "METAR ZLXH 180200Z AUTO 00000MPS //// R/////// ///////// M06/M17 Q1025=",
"ZLJQ": "METAR ZLJQ 180200Z 19003MPS CAVOK M06/M13 Q1022 NOSIG=",
"ZLJC": "METAR ZLJC 180200Z VRB01MPS CAVOK M03/M18 Q1023 NOSIG=",
"ZLLN": "METAR ZLLN 180200Z 00000MPS 3500 BR SCT011 OVC033 M01/M02 Q1025 NOSIG=",
"ZLQY": "METAR ZLQY 180200Z 10001MPS CAVOK 03/M12 Q1022 NOSIG=",
"ZLTS": "METAR ZLTS 180200Z 09001MPS 5000 HZ NSC M03/M06 Q1026 NOSIG=",
"ZLZY": "METAR ZLZY 180200Z AUTO 11006MPS 9999 // ////// M07/M16 Q1023=",
"ZLIC": "METAR ZLIC 180200Z 21006MPS 8000 BLDU NSC 02/M18 Q1020 BECMG TL0330 NSW=",
"ZLGY": "METAR ZLGY 180200Z 18002MPS 140V220 CAVOK 02/M08 Q1021 NOSIG=",
"ZLZW": "METAR ZLZW 180200Z 30002MPS CAVOK M05/M15 Q1023 NOSIG=",
"ZWWW": "METAR ZWWW 180200Z 01002MPS 1400 R25/1400N BR FEW030 M08/M10 Q1025 BECMG TL0330 FZFG=",
"ZWAK": "METAR ZWAK 180200Z 00000MPS 5000 FU NSC M12/M12 Q1024 NOSIG=",
"ZWAT": "METAR ZWAT 180200Z 03002MPS 6000 NSC M20/M22 Q1027 NOSIG=",
"ZWBL": "METAR ZWBL 180200Z 03002MPS 3500 BR SCT020 M08/M12 Q1029 NOSIG=",
"ZWKN": "",
"ZWFY": "METAR ZWFY 180200Z AUTO VRB01MPS 9999 OVC011/// M12/M13 Q1025 NOSIG=",
"ZWHM": "METAR ZWHM 180200Z VRB01MPS 6000 NSC M13/M17 Q1026 NOSIG=",
"ZWTN": "METAR ZWTN 180200Z 20002MPS 170V230 CAVOK M09/M14 Q1022 NOSIG=",
"ZWSH": "METAR ZWSH 180200Z VRB02MPS 5000 FU NSC M06/M12 Q1023 NOSIG=",
"ZWKM": "METAR ZWKM 180200Z 05003MPS 6000 SCT040 M07/M12 Q1030 NOSIG=",
"ZWKC": "METAR ZWKC 180200Z 04003MPS 4000 FU NSC M12/M16 Q1024 NOSIG=",
"ZWKL": "METAR ZWKL 180200Z VRB01MPS 5000 FU NSC M14/M17 Q1026 NOSIG=",
"ZWCM": "METAR ZWCM 180200Z AUTO 19002MPS 9999 NCD M13/M17 Q1024 NOSIG=",
"ZWSC": "METAR ZWSC 180200Z 23002MPS 170V250 6000 NSC M11/M15 Q1023 NOSIG=",
"ZWHZ": "SPECI ZWHZ 180227Z 00000MPS 1400 R27/1800N BR BKN030 M08/M10 Q1026 NOSIG=",
"ZWTC": "METAR ZWTC 180200Z 03002MPS CAVOK M15/M18 Q1022 NOSIG=",
"ZWTP": "",
"ZWNL": "METAR ZWNL 180200Z AUTO 22002MPS 9999 // ////// M03/M07 Q1017=",
"ZWYN": "METAR ZWYN 180200Z 04002MPS 9999 FEW040 M03/M06 Q1016 NOSIG=",
"VHHH": "METAR VHHH 180200Z 05006KT CAVOK 19/08 Q1024 NOSIG=",
"VMMC": "METAR VMMC 180200Z 36009KT CAVOK 17/10 Q1024 NOSIG=",
"ZUGY": "METAR ZUGY 180200Z 23002MPS 8000 SCT020 BKN036 12/01 Q1023 NOSIG=",
"ZUAS": "METAR ZUAS 180200Z 18004MPS 9999 SCT016 BKN030 08/05 Q1024 NOSIG=",
"ZUBJ": "METAR ZUBJ 180200Z VRB01MPS 5000 BR BKN026 07/04 Q1023 NOSIG=",
"ZUKJ": "METAR ZUKJ 180200Z AUTO VRB01MPS 9999 // ////// 10/01 Q1024 NOSIG=",
"ZULB": "METAR ZULB 180200Z VRB01MPS CAVOK 11/04 Q1024 NOSIG=",
"ZUNP": "METAR ZUNP 180200Z VRB01MPS 8000 NSC 10/05 Q1024 NOSIG=",
"ZUPS": "METAR ZUPS 180200Z 16003MPS 0600 R23/0750N FG VV002 05/05 Q1025 NOSIG=",
"ZUTR": "METAR ZUTR 180200Z VRB01MPS CAVOK 13/05 Q1024 NOSIG=",
"ZUYI": "METAR ZUYI 180200Z 16004MPS 130V190 9999 SCT020 BKN046 10/07 Q1024 NOSIG=",
"ZUMT": "METAR ZUMT 180200Z 34002MPS 280V060 6000 OVC023 06/04 Q1023 NOSIG=",
"ZUZY": "METAR ZUZY 180200Z VRB01MPS 6000 OVC040 07/03 Q1024 NOSIG=",
"ZLXN": "METAR ZLXN 180200Z 32004MPS CAVOK M06/M14 Q1023 NOSIG=",
"ZLDL": "METAR ZLDL 180200Z 00000MPS CAVOK M13/M21 Q1025 NOSIG=",
"ZLGM": "METAR ZLGM 180200Z AUTO 24003MPS 9999 /// ////// M12/M21 Q1025 NOSIG=",
"ZLGL": "METAR ZLGL 180200Z 00000MPS 9999 FEW040 BKN080 M14/M20 Q1029 NOSIG=",
"ZLHX": "METAR ZLHX 180200Z 18002MPS CAVOK M18/M25 Q1026 NOSIG=",
"ZLYS": "METAR ZLYS 180200Z 00000MPS 9999 OVC060 M12/M19 Q1031 NOSIG=",
"ZUGH": "METAR ZUGH 180200Z 00000MPS 1600 BR NSC 06/06 Q1024 NOSIG=",
"RCSS": "METAR RCSS 180200Z 09014KT CAVOK 20/10 Q1025 NOSIG RMK A3028=",
"RCKH": "METAR RCKH 180200Z 20003KT 3500 HZ FEW014 23/16 Q1022 NOSIG RMK A3018=",
"RCTP": "METAR RCTP 180200Z 09017KT CAVOK 20/09 Q1024 NOSIG RMK A3026=",
"RCYU": "METAR RCYU 180200Z 07002KT 9999 FEW010 SCT060 20/10 Q1026 NOSIG RMK A3030="
}
updated_metars.json
中保存的信息为
[
{
"NAME": "ZHES",
"DATA": "SPECI ZHES 180220Z 00000MPS 0800 R01/0800V1300U FG FEW003 SCT010 OVC050 02/02 Q1027 BECMG FM0300 1500 BR="
},
{
"NAME": "ZWHZ",
"DATA": "SPECI ZWHZ 180227Z 00000MPS 1400 R27/1800N BR BKN030 M08/M10 Q1026 NOSIG="
}
]
这也就是说在最新一次返回的数据中只有2个机场的报文更新了,updated_metars.json
文件就只保存这2个更新的报文。而all_metars.json
保存所有机场最新的报文,若最新一个时次某机场并未更新,则该机场在all_metars.json
中会保存上一时次的报文。
爬虫程序将每隔5分钟查询一次,若所有机场的报文都没有更新,则all_metars.json
,updated_metars.json
都不会被重写,否则两个文件都会被重写一遍。
为了平衡数据库入库操作和爬虫时次对比的方便,all_metars.json
和updated_metars.json
数据采用不同的保存格式。
最新报文除了会在updated_metars.json
中不断重写,也会归档保存在archive_path
目录中,该目录将以日期为文件夹来归档保存,每个文件为最新查询时间,例如201812050135.json
日志信息将保存在log_path
中,每天自动保存为一个文件,当天实时更新的日志名为taf
或metar
,非当天的日志名为metar.20181203.log
形式。
日志中
2018-12-05 02:11:43,612:INFO: sleeping
表示程序睡眠中
2018-12-05 02:15:03,676:INFO: start crawling
表示爬虫程序开始查询
开始查询以后,日志将记录每个机场的查询状态
2018-12-05 02:15:04,595:INFO: (1/41) ZBAA finished
2018-12-05 02:15:07,564:INFO: (2/41) ZBTJ finished
2018-12-05 02:15:10,417:INFO: (3/41) ZBSJ finished
2018-12-05 02:15:13,192:INFO: (4/41) ZBYN finished
2018-12-05 02:15:16,680:INFO: (5/41) ZBHH finished
2018-12-05 02:15:19,441:INFO: (6/41) ZYTX finished
2018-12-05 02:15:22,207:INFO: (7/41) ZYTL finished
2018-12-05 02:15:25,076:INFO: (8/41) ZYCC finished
2018-12-05 02:15:27,947:INFO: (9/41) ZYHB finished
2018-12-05 02:15:30,636:INFO: (10/41) ZSSS finished
2018-12-05 02:15:33,365:INFO: (11/41) ZSPD finished
2018-12-05 02:15:36,234:INFO: (12/41) ZSNJ finished
2018-12-05 02:15:38,996:INFO: (13/41) ZSOF finished
2018-12-05 02:15:41,763:INFO: (14/41) ZSHC finished
2018-12-05 02:15:44,630:INFO: (15/41) ZSNB finished
2018-12-05 02:15:47,394:INFO: (16/41) ZSFZ finished
2018-12-05 02:15:50,281:INFO: (17/41) ZSAM finished
2018-12-05 02:15:53,128:INFO: (18/41) ZSQD finished
2018-12-05 02:15:55,893:INFO: (19/41) ZHHH finished
2018-12-05 02:15:58,621:INFO: (20/41) ZHCC finished
2018-12-05 02:16:01,430:INFO: (21/41) ZGHA finished
2018-12-05 02:16:04,195:INFO: (22/41) ZGGG finished
2018-12-05 02:16:06,953:INFO: (23/41) ZGOW finished
2018-12-05 02:16:09,736:INFO: (24/41) ZGSZ finished
2018-12-05 02:16:12,485:INFO: (25/41) ZGNN finished
2018-12-05 02:16:15,248:INFO: (26/41) ZGKL finished
2018-12-05 02:16:18,013:INFO: (27/41) ZJHK finished
2018-12-05 02:16:20,881:INFO: (28/41) ZJSY finished
2018-12-05 02:16:23,748:INFO: (29/41) ZUCK finished
2018-12-05 02:16:26,615:INFO: (30/41) ZUUU finished
2018-12-05 02:16:29,499:INFO: (31/41) ZPPP finished
2018-12-05 02:16:32,245:INFO: (32/41) ZLXY finished
2018-12-05 02:16:35,120:INFO: (33/41) ZLLL finished
2018-12-05 02:16:38,082:INFO: (34/41) ZWWW finished
2018-12-05 02:16:40,849:INFO: (35/41) ZWSH finished
2018-12-05 02:16:43,716:INFO: (36/41) VHHH finished
2018-12-05 02:16:46,480:INFO: (37/41) VMMC finished
2018-12-05 02:16:49,261:INFO: (38/41) ZUGY finished
2018-12-05 02:16:52,113:INFO: (39/41) RCSS finished
2018-12-05 02:16:54,983:INFO: (40/41) RCKH finished
2018-12-05 02:16:57,848:INFO: (41/41) RCTP finished
若机场有报文更新,则日志中将提供记录
2018-12-05 02:16:59,849:INFO: ZBAA is updated
2018-12-05 02:16:59,849:INFO: ZBTJ is updated
2018-12-05 02:16:59,849:INFO: ZBSJ is updated
2018-12-05 02:16:59,849:INFO: ZBYN is updated
2018-12-05 02:16:59,850:INFO: ZBHH is updated
2018-12-05 02:16:59,850:INFO: ZYTX is updated
2018-12-05 02:16:59,850:INFO: ZYTL is updated
2018-12-05 02:16:59,850:INFO: ZYCC is updated
2018-12-05 02:16:59,850:INFO: ZYHB is updated
2018-12-05 02:16:59,850:INFO: ZSSS is updated
2018-12-05 02:16:59,850:INFO: ZSPD is updated
2018-12-05 02:16:59,850:INFO: ZSNJ is updated
2018-12-05 02:16:59,850:INFO: ZSOF is updated
2018-12-05 02:16:59,851:INFO: ZSHC is updated
2018-12-05 02:16:59,851:INFO: ZSNB is updated
2018-12-05 02:16:59,851:INFO: ZSFZ is updated
2018-12-05 02:16:59,851:INFO: ZSAM is updated
2018-12-05 02:16:59,851:INFO: ZSQD is updated
2018-12-05 02:16:59,851:INFO: ZHHH is updated
2018-12-05 02:16:59,851:INFO: ZHCC is updated
2018-12-05 02:16:59,851:INFO: ZGHA is updated
2018-12-05 02:16:59,851:INFO: ZGGG is updated
2018-12-05 02:16:59,852:INFO: ZGOW is updated
2018-12-05 02:16:59,852:INFO: ZGSZ is updated
2018-12-05 02:16:59,852:INFO: ZGNN is updated
2018-12-05 02:16:59,852:INFO: ZGKL is updated
2018-12-05 02:16:59,852:INFO: ZJHK is updated
2018-12-05 02:16:59,852:INFO: ZJSY is updated
2018-12-05 02:16:59,852:INFO: ZUCK is updated
2018-12-05 02:16:59,852:INFO: ZUUU is updated
2018-12-05 02:16:59,852:INFO: ZPPP is updated
2018-12-05 02:16:59,853:INFO: ZLXY is updated
2018-12-05 02:16:59,853:INFO: ZLLL is updated
2018-12-05 02:16:59,853:INFO: ZWWW is updated
2018-12-05 02:16:59,853:INFO: ZWSH is updated
2018-12-05 02:16:59,853:INFO: VHHH is updated
2018-12-05 02:16:59,853:INFO: VMMC is updated
2018-12-05 02:16:59,853:INFO: ZUGY is updated
2018-12-05 02:16:59,853:INFO: RCSS is updated
2018-12-05 02:16:59,853:INFO: RCKH is updated
2018-12-05 02:16:59,853:INFO: RCTP is updated
查询结束以后将记录保存和归档情况
2018-12-05 02:16:59,854:INFO: updated updated_metars.json
表示updated_metars.json
文件已更新
2018-12-05 02:16:59,854:INFO: updated all_metars.json
表示all_metars.json
文件已更新
2018-12-05 02:16:59,855:INFO: archived
表示新文件已归档
若最新查询结果并无新的变化,则日志将提示
2018-12-05 02:22:06,138:INFO: last time is not updated
若发生错误信息,则日志会对错误信息做相应的记录
由于SPECI报文是METAR报文的一种不定期的特殊天气报,它隶属于METAR。因此当用户爬取METAR报文的时候会不定期(如果有)获得SPECI报,且按METAR报文的路径保存和归档。