poi 从指定行 开始_Python爬取高德地图POI数据获取【洗浴推拿指南】

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:45   81   0

e4d56f4d4a3bd6956d61212cc133ae93.gif

作者:国服帅座 经济学在读硕士

知乎ID:国服帅座

92eec08ad8a9d0ea58796108db33b6b4.png

这份指南是关于正经【洗浴推拿】的,【大宝剑】老司机请绕道!

速度来了解下,它们都分布在哪个角落吧!

下面,国服帅座将用Python爬取高德地图为您揭晓答案。

认识高德地图API

打开“高德开放平台”,点击“开发文档”,在“Web服务”下寻找并点击“搜索API”。

a45eb9d02fbe8dd287908d541c1a07be.png

我们使用“搜索API”,为的是爬取POI。所谓POI,即“Point of Interest”,中文名叫“兴趣点”。POI分为各种类型,比如学校、商场、快递点等等。这里我们以【洗浴推拿场所】为例。主要参数有三个:

  • key:高德密钥,这是高德给使用其API服务的人士的授权认证

  • types:POI类型,不同类型有不同的编码,如洗浴推拿场所是 071400

  • city:城市编码,也就是身份证号码前6位,如启东市的编码是 320681

f2d2d3856869130c00aaa68c883fb406.png

2a16405d38e3895ba43a5b21e70d9df9.png

爬取启东市的数据

下面以江苏省启东市为例,看看如何爬取单个县级单位的POI数据。

import requests            # 导入各模块
import json
import pandas as pd
from pandas import Series, DataFrame
url = 'https://restapi.amap.com/v3/place/text' # 搜索API
params = {'key':'你的高德密钥',
'types':'071400', # 洗浴推拿场所
'city':'320681'} # 身份证前6位,以启东市为例
res = requests.get(url,params)
jd = json.loads(res.text) # 将JSON格式转化为Python字典格式
df1 = DataFrame(jd['pois']) # 根据键取值,并放入数据框
df2 = df1[['address','adname','name','tel']] # 只显示重要的几列
df2.head() # 篇幅有限,只显示前5行

d34380c9e160720e5fe4763bbfaf7fb4.png

整合为函数

将上面爬取单个城市的过程整合为函数,这样只需要在自变量的位置放置城市编码即可获得当地的洗浴推拿场所数据。

def bath(city):
url = 'https://restapi.amap.com/v3/place/text'
params = {'key':'你的高德密钥',
'types':'071400', # 洗浴推拿场所
'city': city} # 自变量,城市编码
res = requests.get(url,params)
jd = json.loads(res.text) # 将JSON格式转化为Python字典格式
df = DataFrame(jd['pois']) # 根据键取值,并放入数据框
return df[['address','adname','name','tel']] # 只显示重要的列

以河北省保定市徐水区为例,将其城市编码作为自变量代入函数。

bath('130609').head()    # 以徐水区为例,只显示前5条记录

a3dcd051d4475c7b438a980583701a53.png

现在,知道去哪洗澡了么?

公众号第一期留言打卡活动开启

为了增加各位客官与我们的互动,也为互相监督学习,最近想找数据分析实习或工作的朋友,尝试坚持一段时间看是否有成效。公众号『DataGo数据狗』从4月4日开始留言打卡活动,关于活动的一些详细规则如下:

01 留言打卡时间

4月4日-5月4日

02 打卡方式

在每次的推文文章末尾,我们会给出推文相关的留言打卡话题,参与者按照如下格式留言:昵称+自己连续打卡的天数+留言内容,如 萌笔小新+DAY01+留言内容。每天公众号成员互相监督,30天后检验自己的打卡成果。

留言打卡 DAY01

今日的留言话题是查看百度地图、高德地图等官方API,看看自己能用这些接口数据做什么样的需求,请按照”昵称+自己连续打卡的天数(如DAY1 or DAY2 or DAY3)+留言内容(不少于15字)“ 的方式留言。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP