最近在做一个GIS课题,其中一个很重要的工作就是导入周边地图上的数据。可是如果是手动导入,其效率低,同时也不能保证其准确性。在网上搜索一番后,我找到了高德地图Poi搜索这个API,可是网上针对这一API的爬虫似乎较少,于是就自己写了一个。

import requests
import json
import xlwt

# 设置Poi搜索的各项参数
amap_api_key = ''  # 输入自己的key
poi_search_url = 'https://restapi.amap.com/v3/place/around?'
location = '121.459126,31.162659'
radius = '1500'
types = '120000'

# 设置爬虫网络链接测试链接
test_url = 'https://www.baidu.com'

# 设置文件输出名
place = '云景路'
output_type = '商务住宅'
file_name = place + output_type + '.xls'

# 创建表格
workbook = xlwt.Workbook(encoding = 'utf-8')
worksheet = workbook.add_sheet('Sheet 1')

# 获取数据并保存数据
page = 1
while page <= 100:
    k = 0
    req_url = poi_search_url + 'key=' + str(amap_api_key) + '&location=' + str(location) + '&radius=' + str(radius) + '&types=' + str(types) + '&page=' + str(page)
    while k<= 19:
        try:
            line = (page - 1) * 20 + k
            result = requests.get(req_url)
            result.raise_for_status()
            content = result.text
            json_dict = json.loads(content)
            worksheet.write(line, 0, json_dict['pois'][k]['name'])
            worksheet.write(line, 1, json_dict['pois'][k]['location'])
            worksheet.write(line, 2, json_dict['pois'][k]['type'])
            print("数据正在获取中,请耐心等待。")
            k = k + 1
        except:
            try:
                test = requests.get(test_url)
                test.raise_for_status()
                print("数据获取完成。")
                page = 1000
                k = 1000
            except:
                print("数据获取失败,请检查网络连接。")
                page = 1000
                k = 1000
    page = page + 1

# 保存文件
workbook.save(file_name)
print("文件保存成功,请至爬虫所在目录下查看文件。")

使用时设置自己的高德地图的key,更改locationradiustypes来修改搜索的地点和内容,并更改placeoutput_type来修改文件名。设定完后,运行即可。程序收集完后,在同目录下会生成xls文件,即为所有数据。

本项目Github链接:https://github.com/shawnhuangyh/amap_data

最后修改:2019 年 11 月 15 日 10 : 30 PM
如果觉得我的文章对你有用,请随意赞赏