前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >更便捷的POI体量(AOI)数据获取脚本

更便捷的POI体量(AOI)数据获取脚本

作者头像
Sidchen
发布2021-09-15 11:21:56
2.1K2
发布2021-09-15 11:21:56
举报
文章被收录于专栏:规划领域技术规划领域技术

摘要:

POI体量数据(Area of Interest)仍然是高精度的城市空间研究、高效分析、底图绘制的重要数据。之前分享过一个纯人工的数据获取方式,实在麻烦……后面@Georz大兄弟和@Sid合作完成了新的数据获取脚本,升级为半人工方式,更加便捷高效,故分享出来。

本文前面讲开发过程,后面是使用介绍。

(脚本放在共享文件夹,节约时间,本文结束,可直接前往下载。双击运行,按提示使用。好了,再见)。

-1st-

开发

01 缘起

之前已经开发了一个AOI数据获取脚本,“Html请求+ Fiddler抓包+Python解析”三件套,纯人工操作,非常麻烦,原文:

POI的体量 - AOI数据获取脚本分享

是一种很累,但是很安心很稳健的方式

后来@Georz大兄弟找上我,非常开心,终于有人一起做这些事情啦!!!

02 行进

我之前通过抓包就发现了高德地图AOI数据的接口:https://ditu.amap.com/detail/get/detail?id=(POI的ID),问题在于直接请求不返回正确数据,即使设置了header(user-agent)。

这时候,Georz大兄弟带着已经成型的代码来了!也是得益于网络上的各位前辈——关键在于,要补足header的信息才能请求到数据(如uid、cookie等)。

但是有更大的欲望:降低人工手动参与的部分、提高获取效率、更好应对反爬……

中间Georz和Sid做了很多的尝试,拖拖拉拉的:

1. 尝试1:代理IP

有很多代理商,之前没有研究过,虽然Georz大兄弟也就搞好了,但是Sid这边又搞了一会

——最后发现代理是没有用的,因为反爬识别最关键的可能是cookie[1]

失败

2. 尝试2:自动获取cookie+代理IP

因为cookie具备时效性,一个cookie一般只能获取100多个AOI数据,所以希望能通过某些机制实现自动切换可用的cookie,即使用上代理IP

爬取数据时,通常使用requests模块来加载网页,requests. Session能在加载网页时带上前次加载时的cookie……(没太试过,觉得不太行)

后面发现可以用selenium模块来自动化运行Firefox或其他浏览器,然后获取cookie,应该是最接近真实的控制方式了——但是非常奇怪,虽然能够获取cookie,但是这个cookie就是无法请求到数据,无论用没用上代理(人间迷惑问题——有谁了解这个还请赐教)…………

失败

于是,只好退而求其次:每次cookie失效,都调起默认浏览器,人工刷新页面、进行滑块验证等等,获取新的可用cookie——仍然麻烦,最大的问题是,获取数据的过程中,人不能离开电脑!!!可是你又有什么办法呢?……

——建议一边在电脑做自己的事情,一边让程序在后台慢慢跑数据,等突然浏览器自动打开高德地图了,手动刷新个cookie粘过去就好。

后面又把上次AOI脚本里的数据解析、坐标转换、自动检查脚本更新等代码粘贴过来,调试了亿一会儿,于此开发过程结束

-2nd-

使用

01 使用

基础文件:包含POI数据的ID、名称的Excel文件

(会自动识别脚本目录下的xls、xlsx文件中的“id”、“名称”列,无法自动识别的(多个表格文件、其他列名称等情况),需人工辅助程序进行选择)

执行过程:

① 双击脚本

② 确认读取基础文件

③ 自动打开浏览器加载高德地图,手工第一次获取cookie并粘贴到脚本界面

④ 获取数据

……

⑤ 第N次获取cookie

⑥ 第N次获取数据

⑦ 保存数据,转化坐标为WGS84,导出到表格

02 功能

支持随时终止和断点续传

支持自动检查脚本更新

提供AOI边界数据在ArcGIS(10.6)中的一键绘制工具

-3rd-

脚本下载

后台回复“资源素材共建计划

1.数据获取脚本文件夹下:

RoutesDraw.tbx

2.子文件夹:AOI数据(POI边界)获取脚本

GetAOI_SemiAuto_GaodeMap.exe

感谢Georz和Sid在脚本编写中的辛苦付出

提供有限技术支持:

Georz:1565352629@qq.com;

SidChen:sidchen0@qq.com;

脚本使用请在个人科研、学习范畴之内,禁止对外兜售数据等商业行为

Ps. 希望更多的人找上门来共同努力,让我们迎来一个画图/科研不累人的时代!


[1] cookie是某些网站为了辨别用户身份,进行跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。(百度百科:cookie词条)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 规划人在路上 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • -1st-
  • 开发
    • 01 缘起
      • 02 行进
      • -2nd-
      • 使用
        • 01 使用
          • 02 功能
          • -3rd-
          • 脚本下载
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档