大区域百度POI爬取

任务背景

需要爬取川、渝、滇、黔、藏五省(直辖市)的加油站POI数据。百度地图开放平台的地点检索API提供了这样的功能。但API每次最多返回400条数据,且每日有配额的限量(普通用户2万次/天,认证开发者3万次/天)。如果范围过大,将不易进行数据的爬取。
大区域百度POI爬取_第1张图片

准备

  1. 在ArcGIS中查看五地的经纬度范围(右键图层–>属性–>源),这是在WGS84下的经纬度坐标,记下来。
    大区域百度POI爬取_第2张图片
  2. 在爬取时选择的是在python中使用API,可能电脑不一定有python的环境或者所需要的包,因此可以使用百度自家百度大脑AI Studio的在线免费Notebook环境。
  • 首先进入百度大脑https://aistudio.baidu.com/aistudio/index到AI Studio中,注册登陆,进入个人中心,选择项目。
    在这里插入图片描述

  • 找到项目(已经写好了)——百度POI爬取
    大区域百度POI爬取_第3张图片

  • fork项目(选择最新版本V3吧,之前的V2经纬度有点混乱),这样在自己的项目中就有了这个公开项目。
    大区域百度POI爬取_第4张图片

  • 到自己的项目中,运行这个项目,选择基础版免费版即可。
    大区域百度POI爬取_第5张图片

  1. 然后需要用到百度的API进行爬取,所以需要一个百度地图API的AK。
  • 进入百度地图开放平台http://lbsyun.baidu.com/,登录。点击控制台–>应用管理–>我的应用,选择创建应用。
    大区域百度POI爬取_第6张图片
  • 选择浏览器端,白名单打上*号,名字自己取一个。
    大区域百度POI爬取_第7张图片
  • 这样在应用界面就能看到了,鼠标指向AK的代码点击出现的复制按钮即可复制。
    在这里插入图片描述

开始爬取

  1. 进入AI Studio中刚刚进入的百度POI爬取项目的Notebook,在最上面有个参数配置,只用修改这里,在下方的Cell中就是一些配置,其他参数如下:
  • AK就是把自己在百度地图开放平台弄到的AK复制到baidu_web_ak中
  • 范围就按照之前记录的ArcGIS中区域的范围填入下方范围中
  • 滑动窗口大小可以根据情况修改,意思就是以多大经纬的框进行滑动,每个框分别提取数据(不宜过大,因此每次最多400条数据,越小就越不容易漏掉数据,默认0.5度(之前V2默认的5度太大了,数据缺很多))
  • 索引号表示从第几个框开始(因为每日有限额,如果数据很多,一天爬不完,就可以记录下今天爬到了那一个区域,第二天修改索引号为区域号,继续开始爬取)
  • 兴趣区关键字是表示要爬取的兴趣区包含哪些关键字
  • 保存目录是结果txt和log保存的目录
    大区域百度POI爬取_第8张图片
  1. 完毕之后,重启并运行全部代码。
    大区域百度POI爬取_第9张图片
  2. 接下来就能在最后看到中间结果的输出。
    大区域百度POI爬取_第10张图片
  3. 等待爬取完成后,显示空闲,在文件夹中进入output文件夹(自己设置的文件夹),就可以看到txt了。鼠标指向txt,选择弹出框的第二个下载按钮,下载这个txt到本地电脑上。
    大区域百度POI爬取_第11张图片
  4. OK了,打开下载下来的txt看看。有1000多条数据。
    大区域百度POI爬取_第12张图片

最终处理

  1. 将txt用记事本打开另存为ANSI编码,将txt后缀改为csv。
  2. 用Excel打开此csv,使用数据分列,按‘,’分开,保存为xls(我的打开就是分好了的,可能高版本的Excel会自动处理,这个不清楚)。
  3. 表头添加一行,打上列标题:名称,经度,纬度,地区,详细地址。
  4. 打开ArcGIS,使用添加XY数据,将此xls导入,选择对应的经纬度(好像5x5的块太大了,翻车车,改成0.5重新跑了一下,有13000左右的数据),再导出为shp数据。
  5. 最后将数据加载到ArcGIS中,使用五地区域进行一个裁剪(分析工具–>提取分析–>裁剪),就得到了在五地的加油站数据。给个最终结果图(裁剪前后)如下。
    大区域百度POI爬取_第13张图片
    大区域百度POI爬取_第14张图片
    这就是五地密密麻麻的加油站了

你可能感兴趣的:(地理数据,python)