天气预报接口用的城市代码,有时候真挺烦的对吧?尤其在国内,多 API 都得你传个城市代码过去,光有城市名还不行。你得先从 XML 或 SQLite 里把代码扒出来,才能拿到数据。

比较常见的做法就是提前搞一份全国的城市列表,有 XML 格式的,也有 SQLite 的。前者适合前端轻量应用,比如用 ElementTree 直接解析,后者更适合 Android、桌面程序,直接查库,响应也快。

XML 文件里城市名和代码一般长这样:,用 DOM 或 SAX 解析都可以,看你习惯。SQLite 数据库就更直白了,建个 citycode 表,city_namecity_code 一对一,SQL 一查就出来。

我一般会提前把这份城市数据缓存到本地,用户输个城市名,代码秒出来,不用每次都跑数据库。配合 requests 发 API 求,拿到天气数据,再用 JSONXML 解析展示就行,代码也简单。

哦对了,数据也别忘了定期更新,毕竟有些城市名字会改。你可以定个 cron 任务,每周从官方源拉一次就稳了。下面这几个资源就挺全的,我自己也常用:

全国城市列表 SQLite 数据库中国天气网城市代码数据库,还有个整合版的:高德城市代码与行政代码

如果你在做天气相关的 App 或网页服务,早点把这些城市代码搞定,会省不少事。