发现问题背景:
由于前几天参加了一个数据分析比赛,要对其中13多万的数据中的城市进行分布可视化,进而分析,所以要爬取各个城市的经纬度,就采用了百度地图的API来爬取。
先上代码:
import json
from urllib.request import urlopen, quote
import requests,csv
def getlnglat(address):
url = ‘http://api.map.baidu.com/geocoding/v3/’
output = ‘json’
ak = ‘FdOCynWnqWD3BylVaYceQY2ZHAMr0byb’
add = quote(address) #为防止乱码,先用quote进行编码

uri = url + '?' + 'address=' + add + '&output=' + output + '&ak=' + ak
req = urlopen(uri)
res = req.read().decode() #将其他编码的字符串解码成unicode
temp = json.loads(res) #对json数据进行解析
return temp

f = open(‘city.csv’,‘w’,encoding=‘utf-8’,newline=’’)
csv_writer = csv.writer(f)
csv_writer.writerow([“city”, “lng”, “lat”])
for i in address:#address为比赛数据集中的城市
lng = getlnglat(i)[‘result’][‘location’][‘lng’] #获取经度
lat = getlnglat(i)[‘result’][‘location’][‘lat’] #获取纬度
str_temp = [i,lng,lat]
csv_writer.writerow(str_temp) #写入文档
f.close()
然后出现了一个错误:
KeyError Traceback (most recent call last)
in
18 csv_writer.writerow([“city”, “lng”, “lat”])
19 for i in address:
—> 20 lng = getlnglat(i)[‘result’][‘location’][‘lng’] #采用构造的函数来获取经度
21 lat = getlnglat(i)[‘result’][‘location’][‘lat’] #获取纬度
22 str_temp = [i,lng,lat]

KeyError: 'result’
确保你的ak无误以及url格式正确的情况下,还出现这个问题,有可能是对面找不到你所爬取的城市的相关信息,所以我看了一下我已经写入的城市的数据,将其与原来的城市数据进行对比发现,石家庄这个城市的信息爬取不到!在网上找不到相关的解决信息,就差打电话问百度地图的相关工作人员了。但我在翻看百度地图API贴吧网友的帖子时突然受到启发,address参数是必填的:
翻开请求参数的含义我发现,address可以是城市名也可以是地点名,如果只单单给一个城市名的话(不加市,例如“朔州”)它就有可能不能解析出这到底是城市名还是地点名,因为同名的有很多,光光故宫就有4个,所以要再精确一点,所以我尝试了在城市名后加个“市”字,发现有些城市还是爬取不到,所以要再加入限制条件:添加city参数
所以我将代码改成如下:
import json
from urllib.request import urlopen, quote
import requests,csv
def getlnglat(address):
url = ‘http://api.map.baidu.com/geocoding/v3/’
output = ‘json’
ak = ‘FdOCynWnqWD3BylVaYceQY2ZHAMr0byb’ #
add = quote(address) #为防止乱码,先用quote进行编码
city=quote(address)
uri = url + ‘?’ + ‘address=’ + add + ‘&output=’ + output + ‘&ak=’ + ak+’&city=’+city
req = urlopen(uri)
res = req.read().decode() #将其他编码的字符串解码成unicode
temp = json.loads(res) #对json数据进行解析
return temp

f = open(‘city.csv’,‘w’,encoding=‘utf-8’,newline=’’)
csv_writer = csv.writer(f)
csv_writer.writerow([“city”, “lng”, “lat”])
for i in address:
lng = getlnglat(i)[‘result’][‘location’][‘lng’] #获取经度
lat = getlnglat(i)[‘result’][‘location’][‘lat’] #获取纬度
str_temp = [i,lng,lat]
csv_writer.writerow(str_temp) #写入文档
f.close()
添加限制参数city后,顺利爬取成功!
另外还有一个可能出现这个Error的问题,就是当你百度的日限额用完时,也会出现这个bug。

百度地图爬取城市经纬度:KeyError: ‘result——‘对于百度地图API地理编码返回值result为空的问题相关推荐

  1. java中从高德地图爬取数据

    最近一个人负责公司的一个app项目开发,需要从高德地图爬取杭州市全部的超市信息,放入mongodb的数据库中.做地理位置查询.(mongodb这部分有时间补上) 首先去高德地图创建一个开发者账号,获取 ...

  2. 利用python爬取城市公交站点

    利用python爬取城市公交站点 页面分析 https://guiyang.8684.cn/line1 爬虫 我们利用requests请求,利用BeautifulSoup来解析,获取我们的站点数据.得 ...

  3. 用python爬取城市公交路线及站点

    在Python中,可以通过requests.Beautiful Soup和Selenium等工具来爬取城市公交路线及站点数据.下面是大致的步骤: 1. 确定数据源:找到能提供需要的公交路线及站点数据的 ...

  4. 用Python爬取动态加载的诸如百度的图片

    用Python爬取动态加载的诸如百度的图片 使用原因 代码如下 模块介绍 selenium模块 lxml解析模块 requests模块 去除重复 开启多线程 效果如下 留言 使用原因 学习Python ...

  5. 【Python爬虫】百度指数爬取+导入数据库+QuickBI展示

    百度指数爬取原文在这里:如何用Python下载百度指数的数据_小小明-代码实体的专栏-CSDN博客 00.序言 一直想把百度指数每天定时爬下来,然后放到Dashboard里展示,终于,我看到了大神给出 ...

  6. 手把手教-网络时空大数据爬取与分析DAS系统(瓦片地图获取)

    手把手教 | 网络时空大数据爬取与分析DAS系统(瓦片地图获取) 原创 DAS Team 双评价DAS 地理计算语言,为大众赋能地理智慧. --DAS Team 爬取分析DAS系统下载 地址: htt ...

  7. 初探Scrapy爬虫框架之百度网页爬取

    初探Scrapy爬虫框架之百度网页爬取 scrapy框架及百度网页爬取与保存 一.scrapy框架简介 二.自己初使用的心得体会 1.爬虫之前明确目标 2.scrapy框架的简单使用流程 3.scra ...

  8. Python 百度图片爬取

    Python 百度图片爬取 还在为图片不够,一张张点下载发愁吗,这次我们图片一次爬到够! 这次的代码还是很常规的,只是链接的获取要有些技巧,直接代码解说. """这次从逻 ...

  9. 【 批量爬取下载geo.datav.aliyun.com下地图的json文 】

    批量爬取下载geo.datav.aliyun.com下地图的json文件,存放到本地 - 简书

最新文章

  1. python学习笔记3-循环1
  2. talib 中文文档(八): Momentum Indicator Functions 动量指标
  3. AES算法相关数学知识 - 素域学习
  4. 怎么查看电脑多少内核和多少逻辑处理器?
  5. BugkuCTF-MISC题zip伪加密
  6. 学习python课程_想学习Python吗? 这是我们的免费4小时互动课程
  7. 使用Elasticsearch和C#理解和实现CRUD APP的初学者教程——第2部分
  8. Tcl/tk glob nocomplain source
  9. CMOS checksum error-Defaults loaded 故障解决办法
  10. 压测 tpcb pgbench 之五 分区表(pg_pathman)压测
  11. 设定计算机锁定时间,如何设置电脑自动锁屏时间?
  12. 计算机信息检索技术实质上是逻辑运算,在信息检索的实际过程中,如需要扩大检索范围时,如何调整检索策略...
  13. 拜登签署芯片法案后,英特尔股票的前景如何?
  14. hadoop跨集群之间迁移hive数据
  15. 【计算机网络】(5)ping的过程分析+icmp协议
  16. iOS打包错误The operation couldn’t be completed. (AppThinning.StubError error 1.)
  17. ABB机器人FTP传输机器人文件
  18. 大数据与机器学习-大数据预测
  19. 网络聊天程序的设计与实现 python实现 计算机网络课程设计
  20. 深度学习GPU选购指南

热门文章

  1. R语言使用dplyr包的group_by函数和summarise函数基于分组变量计算分析中涉及的所有协变量的均值(Difference in means of covariates)
  2. iphone 11 128G 网络比价
  3. web图书管理系统(HTML+CSS+JS+PHP)
  4. 鸿蒙麒麟华为手机多少钱一部,华为P50真机外观曝光!搭载麒麟9000,首款鸿蒙手机...
  5. 华为交换机端口配置删除_华为交换机基本配置命令
  6. 3ds Max基本操作,快捷键等等详细笔记
  7. 查询电脑本机ip地址 区分内网外网
  8. zzuli OJ 1051: 平方根的和
  9. 启明云端分享|ESP32-CAM操作教程
  10. 计算机主机的输出设备,电脑怎么切换输出设备