Python获取城市列表

Python获取城市列表

一、方案介绍

  1. 基于python3开发环境,使用urllib.request库发起请求,将获得的结果保存为json文件。使用json库加载json文件后,使用jsonpath解析城市列表数据,最后将数据写入csv文件。

二、具体实现

  1. get_citys.py
import csv
import json
import jsonpath
import urllib.request as ur 

# 使用jsonpath解析淘票票获取城市列表
url = 'https://dianying.taobao.com/cityAction.json?activityId&_ksTS=1662244862648_108&jsoncallback=jsonp109&action=cityAction&n_s=new&event_submit_doGetAllRegion=true'
headers = {
    'referer': 'https://dianying.taobao.com/',
}
req = ur.Request(url=url, headers=headers)
resp = ur.urlopen(req)
content = resp.read().decode('utf-8')
content = content.split('(')[1].split(')')[0]
# 因为jsonpath只能解析本地文件,所以需要先保存
with open('taopiaopiao.json', 'w', encoding='utf-8') as f:
    f.write(content)

# 加载淘票票数据文件    
obj = json.load(open('taopiaopiao.json', 'r', encoding='utf-8'))
# $表示根节点,.or[]取子节点,@表示现行节点,..表示不管位置选择所有符合条件的节点,
# *匹配所有元素节点,[]表示迭代器指示、比如下标,?()支持过滤操作,()分组
cities = jsonpath.jsonpath(obj, '$..regionName')
with open('taopiaopiao.csv', 'w', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    for city in cities:
        city_csv = []
        city_csv.append(city)
        writer.writerow(city_csv)
  1. 运行结果
阿坝
阿克苏
阿拉善
阿勒泰
安康
安庆
鞍山
安顺
安阳
白城
百色
白沙
白山
白银
保定
宝鸡
保山
包头
巴彦淖尔
巴中
北海
北京
蚌埠
本溪
毕节
滨州
亳州
巴音郭楞
沧州
长春
常德
昌吉
昌江
长沙
长治
常州
朝阳
潮州
承德
成都
澄迈县
郴州
赤峰
池州
重庆
崇左
楚雄
滁州
大理
大连
儋州
丹东
大庆
大同
大兴安岭
达州
屯昌
德宏
德阳
德州
定安
定西
迪庆
东方
东莞
东营
鄂尔多斯
恩施
鄂州
防城港
佛山
抚顺
阜新
阜阳
抚州
福州
甘南
赣州
甘孜
巩义市
广安
广元
广州
贵港
桂林
贵阳
固原
哈尔滨
海北
海东
海口
海南州
海西
哈密
邯郸
杭州
汉中
鹤壁
河池
合肥
鹤岗
黑河
衡水
衡阳
和田
河源
菏泽
贺州
红河
淮安
淮北
怀化
淮南
黄冈
黄南
黄山
黄石
呼和浩特
惠州
葫芦岛
呼伦贝尔
湖州
佳木斯
吉安
江门
焦作
嘉兴
嘉峪关
揭阳
吉林
济南
金昌
晋城
景德镇
荆门
荆州
金华
济宁
晋中
锦州
九江
酒泉
鸡西
济源
开封
喀什
克拉玛依
克孜勒苏柯尔克孜
昆明
来宾
廊坊
兰州
拉萨
乐东
乐山
凉山
连云港
聊城
辽阳
辽源
丽江
临沧
临汾
临高
临夏
临沂
林芝
丽水
六安
六盘水
柳州
陇南
龙岩
娄底
陵水
吕梁
漯河
洛阳
泸州
马鞍山
茂名
眉山
梅州
绵阳
牡丹江
南昌
南充
南京
南宁
南平
南通
南阳
内江
宁波
宁德
怒江
盘锦
攀枝花
平顶山
平凉
萍乡
普洱
莆田
濮阳
黔东南
潜江
黔南
黔西南
青岛
庆阳
清远
秦皇岛
钦州
琼海
琼中
齐齐哈尔
七台河
泉州
曲靖
衢州
日喀则
日照
三门峡
三明
三亚
上海
商洛
商丘
上饶
山南
汕头
汕尾
韶关
绍兴
邵阳
神农架林区
沈阳
深圳
石河子
石家庄
十堰
石嘴山
双鸭山
朔州
四平
松原
绥化
遂宁
随州
宿迁
宿州
苏州
塔城
泰安
太原
台州
泰州
唐山
天津
天门
天水
铁岭
铜川
通化
通辽
铜陵
铜仁
万宁
潍坊
威海
渭南
文昌
文山
温州
乌海
武汉
芜湖
五家渠
乌兰察布
乌鲁木齐
武威
无锡
吴忠
梧州
厦门
西安
湘潭
湘西
襄阳
咸宁
仙桃
咸阳
孝感
锡林郭勒
兴安盟
邢台
兴义市
西宁
新乡
信阳
新余
忻州
西双版纳
宣城
许昌
徐州
雅安
延安
延边
盐城
阳江
洋浦
阳泉
扬州
烟台
宜宾
宜昌
伊春
宜春
伊犁
银川
营口
鹰潭
宜兴市
益阳
永州
岳阳
玉林
榆林
运城
云浮
玉树
玉溪
枣庄
张家界
张家口
张掖
漳州
湛江
肇庆
昭通
郑州
镇江
中山
中卫
周口
舟山
珠海
驻马店
株洲
淄博
自贡
资阳
遵义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江小鱼

知识创造财富,余额还是小数

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值