谷歌POI抓取

之前用Python调用谷歌API抓取POI,但是调用API要收费,所以研究了如何免费抓取POI;

由于公司是内网,这里只说下我的抓取方法;

项目采用Python+selenium+browsermobproxy开发;

首先通过调用浏览器,访问谷歌地图;

根据坐标范围计算中心点坐标;

拼接搜索URL:https://www.google.com.hk/maps/search/' + search_key + '/@' + str(zb_center[1]) + ',' + str(zb_center[0]) + ',11z?hl=zh-cn

search_key:你要搜索的关键字

zb_center[1]:中心点坐标Y

zb_center[0]:中心点坐标X

这样就可以获取地图左边的分页数据;

如何获取每个查询结果的真实坐标?

这里说下我遇到过的坑,以免大家走弯路:

(1)访问搜索后,点击等级按钮,放大到19级,获取当前坐标,此法不可行,因为获取的坐标不精准;

(2)直接通过详情页的url获取坐标,此法不可行,因为获取的坐标不精准;

(3)模拟鼠标右键,获取真实坐标,虽然可以获取真实坐标,但是无法找到当前详情项的地图位置,除非截图当前页面,然后通过图片识别找到对应的关键字,然后找到像素坐标,

最后再模拟鼠标点击右键,此过程太复杂,而且不能百分之百保证能获取真实坐标;

(4)打开F12,发现搜索的时候,会调用search方法,返回的JSON文本里面包含了真实坐标,通字符串和正则表达式,去掉前面和后面的干扰文字,最后得到一个完整的JSON,此方法可行;

但是如何获取debug模型下的ajax请求呢?

我们通过browsermobproxy代理软件,在python程序里获取所有的隐式url请求,然后过滤所有的search请求,再requests.get(url)获取json数据,最后存到数据库;

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值