0 前言
本文工具使用anaconda3.5+chrome
一般爬虫分为非可视化爬虫和可视化爬虫。
①非可视化爬虫:通过抓包获取数据接口,使用requests、urlib2、urlib3直接请求页面源码或异步加载的JSON数据。
②可视化爬虫:使用selenium工具模拟人为操作,获取页面源码解析数据。
1 高德地图
最近在研究高德地图小区边界经纬度坐标穿获取的问题,本来想先尝试使用requests,发现高德的反爬措施比一般网站都要严,单独通过非可视化爬虫请求基本上无法获取到想要的数据。
抓包
打开高德地图,在搜索框输入一个小区,如重庆大学B区,如下图所示。
我们发现了是通过这个接口https://ditu.amap.com/detail/get/detail?id=B0017819Q6 GET方法获取到的异步JSON数据,有我们想要的经纬度坐标串。但是想要自动获取有两个前提条件,一是需要知道兴趣面的ID,如上面的重庆大学B区ID B0017819Q6;你可以尝试只请求上述连接,你会发现很快就会失效, 即使携带现有的cookie也不一定能请求成功。因此二是如何能保证高德地图能返回正常的数据。
2 准备工作
SELENIUM
考虑到获取小区边界的事是一劳永逸,数据总量不大,可以降低请求频率。直接使用selenium工具模拟人为操作。
① 安装selenium
#安装selenium
pip install selenium
② 下载chromedriver
ChromeDriver仓库下载对应的版本