使用python写了一个程序先爬取高风险地区地址,再调用高德接口进行地理编码获取对应的坐标。目前存在两个问题,第一是在进行地理编码时会发生中断。(keyerror)第二是这程序好像只能在我电脑上运行。
import json
import requests
# 爬取高风险区域地址
url = ["http://m.zz.bendibao.com/news/gelizhengce/fxmd_data.php?level=%E9%AB%98%E9%A3%8E%E9%99%A9" # 高风险
# "http://m.zz.bendibao.com/news/gelizhengce/fxmd_data.php?level=%E4%B8%AD%E9%A3%8E%E9%99%A9" # 中风险
]
degree = ["高风险"] # , "中风险"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
}
for i in range(1):
html = requests.get(url=url[i], headers=headers).text
html = json.loads(html)
# print(html)
# print(html.keys())
data = html['data']
with open("./Map/python/" + degree[i] + ".csv", "w+", encoding="utf-8") as f:
for item in data:
province = item['province']
if province == '河南':
city_name = item['cityname']
# if city_name == '开封':
for qu in item['qu']:
f.write(province + ',' + city_name +
',' + qu['qu'] + '\n')
# 将地址转换为坐标
r = open("./Map/python/高风险经纬度.csv", 'w+')
with open("./Map/python/高风险.csv", 'r', encoding='utf-8')as tt:
address = tt.readlines()
for line in address:
line = line.replace(',', '')
for line in address:
par = {'address': line, 'key': '04640e136bccb65c7c9a5fc3edfc4a8b'}
url = 'https://restapi.amap.com/v3/geocode/geo'
res = requests.get(url, par)
json_data = json.loads(res.text)
geo = json_data['geocodes'][0]['location']
longitude = geo.split(',')[0]
latitude = geo.split(',')[1]
print(longitude+','+latitude, file=r)
先说第一个问题,中断。
报错如下:
地址中的数据:
转换结果:
可以看到在737这里断掉了,我本来以为是地址格式问题没法识别但是目前看来并不是这样。
再说第二个问题,运行不了。
报错内容:
这是朋友发我的报错,但是我完全没有头绪。
我最近刚刚开始学习python,但是大创项目需要用到这些,硬着头皮做出来的东西,出这些错我自己真的不知道怎么办,特别是第二个问题,代码并不复杂但是我也不知道为啥别人跑不了。