使用python及百度API对百度poi数据进行爬取(二)

开始按计划实现流程。

一  区域分割。

这个步骤是整个方案比较关键的一步,区域分割的要求如下。不能太大,因为一个区域一个类别的POI数目不能超过400;覆盖要完全,要包括全市的市域;不能有重叠。

1

之前网上有人写了个程序,但是我觉得这种方式不好,覆盖不全。思路打开,所谓区域分割,好像和格网数据类似,于是我就找同事要了几种全市的格网数据,经过比较分析,2KM*2KM的格网基本能满足我的要求。

2

下一步,就是提取每个格网的最大最小坐标了,问题来了,格网数据里没有这些东西。有同事说,写个arcENGINE的程序就能提取出每个格网的最大最小坐标。我深以为然,但是作为一个懒人,作为一个不把自己定位为程序员的冒牌程序员,我的工作理念是想办法解决问题,而不是所有问题都有程序解决。于是在短暂的思考后,我先用arcgis自带的几何计算获取了每个格网的质心坐标,由于格网是2KM*2KM的正方形,使用arcgis字段计算器,将每个格网的最大最小坐标用质心坐标+_1KM就得到了,不到两分钟就解决了。写什么程序呢!

3

网格数据的坐标是84的,而我需要的是经纬度坐标。这个没办法,用程序转吧,找同事要了个坐标转换函数,嵌入我的ARCengine小程序里,最终得到了文章(一)里我所需要的txt文件。

二 爬虫程序编写

 整体过程就是使用txt中每一行(格网的最大最小坐标)去调用百度api,用爬虫去爬的html,将获取的值存入数据库。具体代码细节我就不赘述了,想要的联系qq1148460370 
 

我只说开发中出现的要注意的问题。

1 循环问题

由于百度api一个区域最大返回数为400,每页最大返回数为20,可以设置page_num的值来循环获取。之前看有人是每个都循环20次,这个很没效率,我的方式是获取total值,用它除以20获取循环最大值,然后循环。

2 分类问题

在http://lbsyun.baidu.com/index.php?title=lbscloud/poitags中,有时用一级行业分类会丢数据,这个要注意,如果一级行业数据丢了,可以联合查询二级行业分类,但是也要注意其最大返回值为行业数*50

三  poi数据图形化可视化处理

之前我写过 见http://blog.csdn.net/u010723516/article/details/71405685

 四 总结 
 

这件事,虽然不是什么大事,但从提出想法、调研试验、宏观解决方案设计、解决方案流程设计、技术细节学习和实践、到最后实现想法,全由我一人独自完成,学到了很多东西,其实还是有点成就感的。在与领导谈论更宏观的问题时,思路也更加的开阔。在完成过程中,利用了能利用的其他资源(格网数据等),加深了一些固有想法,比如孤零零的数据其实价值不大,结合一些想法、方案一起来用价值翻倍;整合各种资源往往比获得资源更重要。可能从更宏观的角度,这个东西还停留在调研试验阶段,但对我个人而言,做了这样一件事挺值的。ps 文章写的有点心不在焉,有点简洁,大家见谅哈,想要源码的加我qq1148460370,交流学习也成。



猜你喜欢

转载自blog.csdn.net/u010723516/article/details/72909969