POI是一切能够抽象为空间点的现实世界的实体,好比餐馆,酒店,车站,停车场等。POI数据具备空间坐标和各类属性,是各类地图查询软件的基础数据之一。百度地图做为国内顶尖的地图企业,其上具备丰富的POI数据,要获取其上的POI数据能够根据百度地图提供的API,可是这种方式有限制,能获取的数据极少。本文将详细介绍经过模拟HTTP请求的方式获取其上的POI数据。web
当咱们在百度地图的搜索框中经过输入关键字进行搜索时,这其实就是发送一个HTTP请求到百度的服务器,而后服务器返回数据。json
打开网页的调试面板能够清楚的看到这些请求 以及服务器返回的数据 这些数据都是JSON格式的 在地址栏中输入请求的url http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&da_src=searchBox.button&wd=%E4%BA%BA%E5%90%8D%E5%B9%BF%E5%9C%BA&c=289&src=0&wd2=&sug=0&l=17&b=(13522376.995,3640442.635;13522548.995,3641718.635)&from=webmap&biz_forward={%22scaler%22:1,%22styles%22:%22pl%22}&sug_forward=&tn=B_NORMAL_MAP&nn=0&u_loc=13506522,3642064&ie=utf-8&t=1500039457397 服务器
以后便能看到返回的JSON数据 将这些JSON文本复制到JSON在线校验的网站(如 www.json.cn)上能够更清楚的看到其中的信息网站
如上图所示 一个url返回这样一些数据 我提取的是其中content节点中的数据 在这个节点中 一个url最多返回十条数据 一条数据中包含不少个子节点数据 其中 编码
x,y节点中的数据能够用来获取这条数据的坐标信息 百度的坐标系统有百度米制坐标和百度经纬度坐标 从x,y节点数据通过转换便可得到这两个坐标,这个在稍后的会讲解。url
要想经过程序模拟构建url来发送http请求 就须要先了解url的参数构成 通过本人的屡次尝试 将url参数减小为spa
http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&da_src=searchBox.button&wd=人民广场&c=289&pn=0调试
最重要的就是最后三个参数 wd是搜索的关键词 c是搜索区域对应的城市编码,上海市对应的就是289 pn是返回数据的页码 不一样的搜索关键词返回的数据的页数是不一样的 由于百度会返回不少相关的信息(POI数据)blog
我是经过关键词获得百度百度返回的POI数据的 这就须要在url的参数中输入不一样的关键词和页码来获取不一样的POI数据 那么事先就应该准备不少搜索的关键词 尽量多的关键词能够获取更多的POI 数据 下篇会讲解该如何准备百万级别的搜索关键字utf-8