爬取高德地图上饮食餐馆类信息

  1. https://lbs.amap.com/dev/key/app 在高德开放平台注册成为开发者
  2. 创建新应用,获得调用webapi的key值
  3. https://lbs.amap.com/api/webservice/gettingstarted 根据开发指南获取到对应的请求地址

下面是获取安庆地区的餐饮信息的一个封装

import json
import requests
import time
import xlwt

dictlists = []

class Create_info():
    def __init__(self, n, token, type, address):
        self.n = n
        self.token = token
        self.type = type
        self.address = address

    def create_url(self):
        urls = []
        for i in range(1, self.n): # page是当前页码, offset是每页多少条数据,默认20条
            url = 'https://restapi.amap.com/v3/place/text?key={}&types={}&city={}&citylimit=true&output={}&page={}&extensions=all'.format(self.token, self.type, self.address, 'JSON', i)
            urls.append(url)
        return urls

    def get_req(self, urls):
        j = 0
        for url in urls:
            print(url)
            res = requests.request('GET', url=url)
            time.sleep(1)
            res = json.loads(res.text)
            l = res.get('pois')
            for i in l:
                print(i)
                j += 1
                print(j)
                dict1 = {}
                dict1['name'] = i.get('name')
                dict1['address'] = i.get('address')
                dict1['tel'] = i.get('tel')
                dictlists.append(dict1)
        return dictlists

    def write_to_excel(self, poilist):
        # 一个Workbook对象,这就相当于创建了一个Excel文件
        book = xlwt.Workbook(encoding='utf-8', style_compression=0)
        sheet = book.add_sheet('ceshi', cell_overwrite_ok=True)

        sheet.write(0, 0, '店名')
        sheet.write(0, 1, '地址')
        sheet.write(0, 2, '电话')

        for i in range(len(poilist)):
            sheet.write(i + 1, 0, poilist[i]['name'])
            sheet.write(i + 1, 1, poilist[i]['address'])
            sheet.write(i + 1, 2, poilist[i]['tel'])

        book.save(r'安庆市.xlsx')
        print('save success')

    def run(self):
        urls = self.create_url()
        dictlistss = self.get_req(urls)
        print(len(dictlists))
        self.write_to_excel(dictlistss)

if __name__ == '__main__':
    token = '259703e680a6fd230c1b65ae7b0ec733433'
    c = Create_info(100, token, '050000', '安庆市')
    c.run()
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值