查看原文
其他

(一)Python爬虫--POI数据获取

cxw 地学分析与算法 2022-05-17

做数据分析,数据是不可少的。尤其是做时空数据分析,时不时还需要一点POI数据,所以今天来说说如何爬取你需要的POI数据。


今天先说说比较常规的爬虫,主要用到的Python中的urllib2+BeautifulSoup+lxml。


比如,我需要一些美食店的数据来做可达性分析,那么我们可以去百度地图输入关键字“美食 光谷”,你就会看到平台返回的如下数据:

其实,他的这些数据都是通过接口返回到你的浏览器的,你可以按F12,在Network里找到按一定格式返回的数据,百度地图是返回的json格式数据。接口地址如下:

https://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&da_src=searchBox.button&wd=%E7%BE%8E%E9%A3%9F%20%E5%85%89%E8%B0%B7&c=218&src=0&wd2=&pn=0&sug=0&l=15&b=(12724092,3549691;12739452,3554155)&from=webmap&biz_forward={%22scaler%22:1,%22styles%22:%22pl%22}&sug_forward=&auth=UKd%40CS365E02WJOJ2ZPe4KD221ey522DuxHELLLBzLTtzljPyBYYx1GgvPUDZYOYIZuVt1cv3uVtGccZcuVtPWv3GuxtVwi04960vyACFIMOSU7ulEeLZNz1VD%3DCUbB1A8zv7u%40ZPuVteuVtegvcguxHELLLBzHHtswVVH3f2Bggc1a&device_ratio=1&tn=B_NORMAL_MAP&nn=0&u_loc=12731772,3551923&ie=utf-8&t=1546663268077

你可以直接把这个地址往输入到浏览器地址栏,访问看看长什么样。

把这个地址解码一下:

https://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&da_src=searchBox.button&wd=美食 光谷&c=218&src=0&wd2=&pn=0&sug=0&l=15&b=(12724092,3549691;12739452,3554155)&from=webmap&biz_forward={"scaler":1,"styles":"pl"}&sug_forward=&auth=UKd@CS365E02WJOJ2ZPe4KD221ey522DuxHELLLBzLTtzljPyBYYx1GgvPUDZYOYIZuVt1cv3uVtGccZcuVtPWv3GuxtVwi04960vyACFIMOSU7ulEeLZNz1VD=CUbB1A8zv7u@ZPuVteuVtegvcguxHELLLBzHHtswVVH3f2Bggc1a&device_ratio=1&tn=B_NORMAL_MAP&nn=0&u_loc=12731772,3551923&ie=utf-8&t=1546663268077

这你应该看出个大概了,哪些地方是可以替换的

https://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&da_src=searchBox.button&wd=你的关键字&c=城市id&src=0&wd2=&pn=页数


有了这个接口地址,你就可以用urllib2去请求了,由于这里直接返回的json数据,直接用json解析就好,就没必要用BeautifulSoup+lxml解析了。如果你请求的是网页,就可以用BeautifulSoup+lxml解析了。


接下来就可以愉快的爬取了,请求的时候记得把你的程序沉睡几秒,一直请求这样不好哦。


爬的数据长这样(两万多条):

当然,你还可以从返回的json数据里面解析出更多的信息,如评分、价格、评论等信息。


关注公众号,回复"POI数据",获得源码和数据。


▼更多精彩,敬请关注▼



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存