使用python及百度API对百度poi数据进行爬取(一)
2017-06-07 09:57
746 查看
档案系统初期算是告一段落了,利用一点时间继续爬取POI。和领导聊聊,受益匪浅。之前我的想法是爬取一份poi数据,直接能用;而领导听了之后,觉得更好的方式是爬取多个渠道来源的POI数据,然后做一个数据比较融合(最终事情能不能成不好说,但是经过这么一回,细节技术上有所提高,宏观把控整体项目流程能力有所长进,更重要的是通过和能人交流,以更高的眼界更宏观的看待数据、应用以及问题,这就是成长)。 我之前采用的方式,可以满足需求,但是POI数据获取效率差一些(虽然已经很快,但是相比本文这种还是慢一些)、数据现势性不好,高德数据和百度数据虽然是两套,但是仅仅是坐标不同(所以显然还是一套)。所以,我加一种方式来爬取百度poi。
一 调研: 百度API提供了一个叫Place API获取poi的接口,有个城市内检索 实例为
它返回的是个json类型数据,一个区域最大返回数为400,每页最大返回数为20。显然一个城市内不管什么类别的poi,不可能只有400个,会遗漏数据,故舍去
还有一个矩形区域检索,实例为
一 调研: 百度API提供了一个叫Place API获取poi的接口,有个城市内检索 实例为
http://api.map.baidu.com/place/v2/search?query=银行&page_size=10&page_num=0&scope=1®ion=北京&output=json&ak={您的密钥}
它返回的是个json类型数据,一个区域最大返回数为400,每页最大返回数为20。显然一个城市内不管什么类别的poi,不可能只有400个,会遗漏数据,故舍去
还有一个矩形区域检索,实例为
http://api.map.baidu.com/place/v2/search?query=美食&page_size=10&page_num=0&scope=1&bounds=39.915,116.404,39.975,116.414&output=json&ak={您的密钥}
只要区域划分得当,这个可以使用 二 要解决的问题 1 区域划分 网上有人通过递归写代码的方式来划分,这样划分有问题,第一,划分的区域不能完全对应一个城市的市区;第二,算法设计比较麻烦。解决办法,后面详细说。 2 类别问题 百度API的接口必须要指定query的类别,那么如果类别指定不准,或者类别不全,根本无法完成爬取一个城市所有poi的任务。解决办法,说实话,这个问题在我做这件事情的时候, 十分棘手,不过我最终找到了这个网页,http://lbsyun.baidu.com/index.php?title=lbscloud/poitags,一切都不是问题了 三 整体流程 1 区域划分,2km*2km的区域基本可以满足需求,获取每个区域的对角坐标(经纬度),逐行写入一个txt文本里 2 爬虫程序编写 读取1中的txt文本,逐行循环;调用百度API接口,爬取json;将爬取的数据存入数据库中; 每个类别跑一次程序 3 爬下的POI数据处理 poi显示,投影坐标转换,与地图叠加 后文将详细介绍流程
相关文章推荐
- 使用python及百度API对百度poi数据进行爬取(二)
- 使用python及百度API对百度poi数据进行爬取(三)
- Python3--批量爬取数据之调用百度api进行翻译
- Python 使用nltk对数据进行自然语言处理(nlp)
- Python例程:使用adodbapi存取二进制数据
- 使用Python进行Elasticsearch数据索引
- 【python系列】使用pickle进行数据的序列和反序列化
- python使用pygal进行绘制数据图表和监控图表
- 使用python中的matplotlib进行绘图分析数据
- python使用pygal进行绘制数据图表和监控图表
- 使用Python下的XSLT API进行web开发的简单教程
- python (1):使用python 进行api 接口测试
- 使用CloudSight API进行图像识别的Python脚本
- matplotlib -- 使用python中的matplotlib进行绘图分析数据
- 在Python3中使用asyncio库进行快速数据抓取的教程
- python使用json格式进行数据封装
- 使用Jakarta POI EXCEL API自动生成ORACLE数据字典的源代码
- python在大量地图poi数据中进行位置查找:来源于Rtree的思想
- 使用 Google API 进行翻译的 Python 小工具
- 在Python中使用zlib模块进行数据压缩的教程