零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

您所在的位置:网站首页 百度地图数据抓取方法视频 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

2024-06-28 13:04| 来源: 网络整理| 查看: 265

好,现在进入高阶代码篇。 目的: 爬取昆明市中学的兴趣点POI。 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894,102.174112 右上角:26.548645,103.678942 URL模板: http://api.map.baidu.com/place/v2/search?query=中学& bounds=24.390894,102.174112,26.548645,103.678942&page_size=20&page_num=0&output=json&ak=9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 工具:python2.7 我们将使用python语言来写爬虫代码。

1.功能分解 先把这个爬虫要实现的功能做一个分解。 已经知道在这个URL中,变量是bounds和page_num的值。 Bounds范围值要采取矩形分割,分4个矩形,就是4组坐标范围,page_num的值从0到19之间。 1组坐标范围20个page_num值,4×20=80。要生成的URL阵列是80个。 每个URL都能生成一个网页,每个网页上的信息都要被爬下来,保存到一个txt文件中。

A.根据bounds和page_num组合生成URL。 B.根据URL爬取网页数据,添加到txt文件中。 这将是一个循环代码: Bounds=[矩形1,矩形2,矩形3,矩形4] Page_nums=[0、1、2……19]

For 矩形 in bounds: For page_num in page_nums: URL=http://api.map.baidu.com/place/v2/search?query=中学& bounds=矩形&page_size=20&page_num=page_num&output=json&ak=9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO URL内容爬取,添加入txt文件 Next Next End 这个代码的框架说完了。 然后进入每个功能的代码如何实现环节。

2.功能代码实现。 代码要实现的功能是哪几个呢? 按照步骤分: A.bounds列表的生成。 B.URL列表的生成。 C.爬取的网页内容保存到txt文本中。

(1)bounds列表生成 再说一下,因为这个是零基础教程,所以我会讲解得非常细致,python代码会由浅入深,从最简单最基础的开始。 我们看一下坐标范围: 左下角:24.390894,102.174112 右上角:26.548645,103.678942 纬度差是2.157751,经度差是1.50483。 用代码表示一下坐标范围: lat_1=24.390894 lon_1=102.174112 lat_2=26.548645 lon_2=103.678942 lat是纬度的英文,lon是经度的英文。 我们切分矩形的话,这个矩形的坐标肯定是由上面这几个坐标范围计算的来的,内插运算。 为了计算简便,我们就切方形吧,这个方形的边长我们设定一个值,假设是las(length of a side,边长英文)。 这里写图片描述 那么第一个矩形的左下角坐标是lat_1+las,lon_1,右上角坐标是lat_1+las*2,lon_1+las;第二个矩形的左下角坐标是lat_1+las,lon_1+las,右上角坐标是lat_1+las*2,lon_1+las*2…… 我们设定的计算规则是: 整个坐标范围的大矩形我们叫它矩形A,切分的小矩形我们叫它矩形B。 矩形A的左下角坐标是:lat_1,lon_1,右上角坐标是lat_2,lon_2; 矩形B的边长是las。 那么计算一下矩形B的数量: (int((lat_2-lat_1)/las)+1)*(int((lon_2-lon_1)/las)+1) int是一个取整函数。 int(1.334)=1 int((lat_2-lat_1)/las)+1计算的是在纬度上切了几个,int((lon_2-lon_1)/las)+1计算的是在经度上切了几个,乘积就是一共几个矩形。 我们看下面一段代码:

lat_1=24.390894 lon_1=102.174112


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3