天气预报接口用的城市代码,有时候真挺烦的对吧?尤其在国内,多 API 都得你传个城市代码过去,光有城市名还不行。你得先从 XML 或 SQLite 里把代码扒出来,才能拿到数据。
比较常见的做法就是提前搞一份全国的城市列表,有 XML 格式的,也有 SQLite 的。前者适合前端轻量应用,比如用 ElementTree 直接解析,后者更适合 Android、桌面程序,直接查库,响应也快。
XML 文件里城市名和代码一般长这样:
,用 DOM 或 SAX 解析都可以,看你习惯。SQLite 数据库就更直白了,建个 citycode
表,city_name
和 city_code
一对一,SQL 一查就出来。
我一般会提前把这份城市数据缓存到本地,用户输个城市名,代码秒出来,不用每次都跑数据库。配合 requests 发 API 求,拿到天气数据,再用 JSON 或 XML 解析展示就行,代码也简单。
哦对了,数据也别忘了定期更新,毕竟有些城市名字会改。你可以定个 cron
任务,每周从官方源拉一次就稳了。下面这几个资源就挺全的,我自己也常用:
全国城市列表 SQLite 数据库、中国天气网城市代码数据库,还有个整合版的:高德城市代码与行政代码。
如果你在做天气相关的 App 或网页服务,早点把这些城市代码搞定,会省不少事。