首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

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

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

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

    数据来源

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

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

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