Python爬取全国主要城市经纬度坐标


1、首先注册百度或高德地图的开发密钥。


2、在Python搞爬虫,你可能需要这几个库,json,urllib,直接pip就行。

import json
from urllib.request import urlopen, quote


url = 'http://api.map.baidu.com/geocoder/v2/'
output = 'json'
ak = '**vGLiKFk4Csd4AmaEWBI7a3wFlBdNff '
a=['北京','天津','石家庄','太原','呼和浩特','沈阳','大连','长春','哈尔滨','上海','南京','杭州','宁波','合肥','福州','厦门','南昌','济南','青岛','郑州','武汉','长沙','广州','深圳','南宁','海口','重庆','成都','贵阳','昆明','拉萨','西安','兰州','西宁','银川','乌鲁木齐']
for i in a:
     add = quote(i)
     uri = url + '?' + 'address=' + add  + '&output=' + output + '&ak=' + ak #百度地理编码API
     req = urlopen(uri)
     res = req.read().decode()
     temp = json.loads(res)
     print(temp['result']['location']['lng'],temp['result']['location']['lat'])#打印出经纬度


  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: Python可以通过一些库来爬取上海市地铁站的经纬度。首先需要确定爬取网站的URL,例如可以选择使用高德地图提供的API。通过Python的requests库向API发送请求,获取API返回的json格式的数据。然后使用Python的json库对返回的数据进行解析,得到站点名称、经度和纬度等信息。最后,将获取到的信息存储到本地文件,以备后续使用。 具体实现步骤如下: 1.引入requests和json库: import requests import json 2.设置API链接,将链接中的参数替换为想要获取的城市和关键词(上海和地铁站): url = 'https://restapi.amap.com/v3/place/text?keywords=地铁站&city=上海&output=json&offset=25' 3.发送请求,获取数据: response = requests.get(url) data = response.text 4.将返回的json格式数据解析为Python对象: json_data = json.loads(data) station_list = json_data['pois'] 5.遍历地铁站列表,获取名称、经度、纬度等信息: for station in station_list: name = station['name'] lon = station['location'].split(',')[0] lat = station['location'].split(',')[1] 6.将数据存储到本地文件: with open('stations.csv', 'w') as f: for station in station_list: name = station['name'] lon = station['location'].split(',')[0] lat = station['location'].split(',')[1] f.write(name + ',' + lon + ',' + lat + '\n') 以上就是使用Python爬取上海市地铁站经纬度的基本步骤。通过这种方法可以快速获取地铁站数据,为后续的分析、可视化等工作提供支持。 ### 回答2: 爬取上海市地铁站经纬度,需要使用 Python 程序进行爬取。具体步骤如下: 1. 导入必要的库:在 Python 程序中,需要导入 requests、json 和 BeautifulSoup 库。 2. 分析网页源代码:打开上海轨道交通网站(https://service.shmetro.com/skin/js/pca.js),查看源代码,可以发现地铁站经纬度信息储存在一个 JavaScript 变量中。 3. 解析 JavaScript 变量:使用 re 库正则表达式的方式解析出 JavaScript 变量的值,再使用 json 库将其转换成 Python 字典进行操作。 4. 提取地铁站经纬度信息:从字典中提取出有用的地铁站经纬度信息。 5. 数据存储:使用 pandas 库将数据储存在 csv 文件中,更方便地进行分析和可视化。 具体实现代码可参考以下步骤: ``` python import requests import re import json import pandas as pd from bs4 import BeautifulSoup # 1. 定义要爬取的网址 url = "https://service.shmetro.com/skin/js/pca.js" # 2. 发送请求并获取网页源代码 r = requests.get(url) r.encoding = "utf-8" html = r.text # 3. 使用正则表达式解析 JavaScript 变量 pattern = r"var stationjson = ([\S\s]*?);" data = json.loads(re.search(pattern, html).group(1)) # 4. 提取地铁站经纬度信息 stations = data["s"] station_list = [] for line in stations: for station in line["st"]: name = station["n"] lng = station["sl"] lat = station["lt"] station_list.append([name, lng, lat]) # 5. 数据存储 df = pd.DataFrame(station_list, columns=["站名", "经度", "纬度"]) df.to_csv("shanghai_subway_stations.csv", encoding="utf_8_sig", index=None) ``` 通过以上代码,我们可以成功地爬取上海市地铁站经纬度信息,并将其保存在 csv 文件中,方便进行数据分析和可视化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

兰小莫

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值