V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
larkifly
V2EX  ›  Python

撸了一个查询全球所有城市的 API,提供给大家使用,望轻拍。

  •  4
     
  •   larkifly · 2015-09-14 01:03:58 +08:00 · 15739 次点击
    这是一个创建于 3390 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为工作的需要,找了半天都没找到,索性,自己撸了一个,目前只有中文和英文版。

    数据来源

    在此感谢鹅厂,所有的数据都是从鹅厂注册页面获取到的

    github

    演示地址

    截图

    使用方法:

    • 输入国家名称,获取到国家 ID
    • 输入省,获取到国家和省 ID
    • 输入城市,获取到国家、省和市 ID

    城市信息分为中文和英文,所以每个接口得传个语言参数

    API

    url = 'http://tools.bugcode.cn'

    根据城市名字获取城市 ID
    r = requests.post (url+'/cities/search', {'country': '中国', 'language': 'cn', 'province': '江苏', 'city': '淮安'})
    if r.status_code == 200:
        print r.text
    else:
        print r.status_code
    
    根据城市 ID 获取城市名字
    • 获取所有国家

      r = requests.post (url+'/cities/search', {'action': 'countries', 'language': 'cn'})
      if r.status_code == 200:
          print r.text
      else:
          print r.status_code
      
    • 获取一个国家所有省份

      r = requests.post (url+'/cities/search', {'action': 'provinces', 'language': 'cn', 'c_id': 1})
      if r.status_code == 200:
          print r.text
      else:
          print r.status_code
      
    • 获取一个国家一个省所有城市

      r = requests.post (url+'/cities/search', {'action': 'cities', 'language': 'cn', 'c_id': 1, 'p_id': 32})
      if r.status_code == 200:
          print r.text
      else:
          print r.status_code
      
    • 获取一个国家一个省一个城市

      r = requests.post (url+'/cities/search', {'action': 'city', 'language': 'cn', 'c_id': 1, 'p_id': 32, 'i_id': 8})
      if r.status_code == 200:
          print r.text
      else:
          print r.status_code
      
    42 条回复    2018-09-30 10:11:00 +08:00
    EnderSodium
        1
    EnderSodium  
       2015-09-14 01:05:04 +08:00
    地址呢?
    larkifly
        2
    larkifly  
    OP
       2015-09-14 01:05:36 +08:00
    @EnderSodium 你好快,我还没编辑好了
    linoder
        3
    linoder  
       2015-09-14 01:05:37 +08:00
    这种都是私有的
    larkifly
        4
    larkifly  
    OP
       2015-09-14 01:09:00 +08:00
    @linoder 对了,网上找到数据源了,就整理了一下,拿出来和大家共享
    secret32
        5
    secret32  
       2015-09-14 09:51:32 +08:00
    为什么满版的 undefined
    Nan7Huang
        6
    Nan7Huang  
       2015-09-14 09:52:26 +08:00
    满屏尽带 undefined
    ltttx
        7
    ltttx  
       2015-09-14 09:55:22 +08:00
    用 GET 更好点
    lxw322
        8
    lxw322  
       2015-09-14 10:57:19 +08:00
    已被鹅厂屏蔽了?
    sunchen
        9
    sunchen  
       2015-09-14 12:07:41 +08:00
    国际版 QQ 文件目录里有个城市列表的 xml 文件,直接提取出来解析就行了
    larkifly
        10
    larkifly  
    OP
       2015-09-14 12:44:18 +08:00
    @Nan7Huang undefined,额,看样子 js 写的有问题,请问查的是什么,我修复一下
    larkifly
        11
    larkifly  
    OP
       2015-09-14 12:44:58 +08:00
    @Nan7Huang undefined,额,看样子 js 写的有问题,请问查的是什么,我修复一下
    @lxw322 数据是我本地缓存的,不是从鹅厂那抓取的
    finalhyl
        12
    finalhyl  
       2015-09-14 13:57:57 +08:00
    查了几个城市都是 undefined
    lilanfeng2089
        13
    lilanfeng2089  
       2015-09-14 15:28:52 +08:00
    larkifly
        14
    larkifly  
    OP
       2015-09-14 15:50:29 +08:00
    @lilanfeng2089 只支持 post 方式哦
    larkifly
        15
    larkifly  
    OP
       2015-09-14 15:50:59 +08:00
    @finalhyl 能告诉我是城市名吗,我修复一下,因为我查了一些都没问题
    tuzkiss
        16
    tuzkiss  
       2015-09-14 15:55:07 +08:00
    满屏尽带 undefined
    smithtel
        17
    smithtel  
       2015-09-14 16:00:57 +08:00
    一大串 undefined
    smithtel
        18
    smithtel  
       2015-09-14 16:02:31 +08:00   ❤️ 1
    两个条件一起查询就会出现一大串 undefined
    viko16
        19
    viko16  
       2015-09-14 16:04:08 +08:00
    cities.json 我抱走了,谢谢楼主
    larkifly
        20
    larkifly  
    OP
       2015-09-14 16:57:51 +08:00
    @viko16 客气,今晚有时间我把英文版的放出来
    larkifly
        21
    larkifly  
    OP
       2015-09-14 17:00:00 +08:00
    @smithtel 能给我一个你查询的内容吗?试了好多次,我还没复现你说的这个情况
    rvw
        22
    rvw  
       2015-09-14 17:53:24 +08:00
    undefined 闹怎样
    Anybfans
        23
    Anybfans  
       2015-09-14 18:05:47 +08:00   ❤️ 1
    larkifly
        24
    larkifly  
    OP
       2015-09-14 19:06:03 +08:00
    @Anybfans 谢谢
    zhicheng
        25
    zhicheng  
       2015-09-14 19:08:36 +08:00
    larkifly
        26
    larkifly  
    OP
       2015-09-14 19:25:09 +08:00
    @Anybfans
    @rvw
    @smithtel
    @secret32
    @Nan7Huang

    感谢各位,现在已经修复了。
    flowfire
        27
    flowfire  
       2015-09-14 19:34:29 +08:00
    查全名查不到。。。
    rvw
        28
    rvw  
       2015-09-14 19:38:20 +08:00
    @larkifly 查不到怎么办
    stanhou
        29
    stanhou  
       2015-09-14 19:47:46 +08:00
    其实 LZ 只要提供一下城市的 XML 就好了,那个作用更大。
    finalhyl
        30
    finalhyl  
       2015-09-14 23:55:35 +08:00
    似乎之前 undefined 的问题已经修复,但是直辖市查不到;
    英文也查不到,查了加州的几个城市都是空
    larkifly
        31
    larkifly  
    OP
       2015-09-15 00:30:06 +08:00
    @stanhou 在 github 有 json 格式的
    larkifly
        32
    larkifly  
    OP
       2015-09-15 00:30:47 +08:00
    @flowfire 输入美国就可以了
    larkifly
        33
    larkifly  
    OP
       2015-09-15 00:35:50 +08:00
    @finalhyl 直辖市在省 /州那个输入,英文要先选为英文,然后比如美国,在国家那输入 United States ,州比如 Alabama ,首字母大写
    msg7086
        34
    msg7086  
       2015-09-15 05:32:36 +08:00
    看了一眼发现找不到自己的城市
    larkifly
        35
    larkifly  
    OP
       2015-09-15 08:38:37 +08:00
    @msg7086 什么城市了,我给添加上
    msg7086
        36
    msg7086  
       2015-09-15 08:41:52 +08:00
    @larkifly Lincoln Park
    larkifly
        37
    larkifly  
    OP
       2015-09-15 09:21:17 +08:00
    @msg7086 没 google 这个城市了,目前只支持城市名查询,不知道具体地名哦
    msg7086
        38
    msg7086  
       2015-09-15 09:53:05 +08:00
    @larkifly 这是个城市,不是地名。姑且是有市政府的。
    finalhyl
        39
    finalhyl  
       2015-09-15 12:04:35 +08:00
    @larkifly 英文就是这么输入的,加州的城市都搜不出来.
    德州倒是有结果.
    larkifly
        40
    larkifly  
    OP
       2015-09-15 16:03:07 +08:00
    @finalhyl
    @msg7086
    我再看看
    yanpeng
        41
    yanpeng  
       2018-09-23 09:08:46 +08:00
    @larkifly 请问一下你现在还有数据吗,或者告知一下爬数据的页面
    larkifly
        42
    larkifly  
    OP
       2018-09-30 10:11:00 +08:00
    @yanpeng 腾讯 QQ 的注册页面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:40 · PVG 09:40 · LAX 17:40 · JFK 20:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.