根据坐标爬取饿了么商家信息

根据经纬度来爬取附近商家信息,保存在经纬度命名的csv文件中,方便后续导入pandas做数据清洗、分析。

import requests
import json
import time
import csv
def restapi(url,latitude,longitude):
    res_list = []
    res = requests.get(url)
    if res.status_code == 200:
        json_data = json.loads(res.text)
        for context in json_data:
            name = context['name']  #店铺名称
            month_sales = context['recent_order_num']   #月销量
            order_lead_time = context['order_lead_time']  #平均配送时间
            tip = context['description'] #简介
            phone = context['phone'] #电话
            classification = context['flavors'][0]['name'] #类型
            rate = context['rating']  #评分
            address = context['address'] #地址
            res_latitude = context['latitude'] #经度
            res_longitude = context['longitude'] #纬度
            data = {'店铺名称': name,
                    '月销量': month_sales,
                    '平均配送时间': order_lead_time,
                    '简介': tip,
                    '电话': phone,
                    '类型': classification,
                    '评分': rate,
                    '地址':address,
                    '经度':res_latitude,
                    '纬度':res_longitude,}
            res_list.append(data)
            headers = ['店铺名称', '月销量', '平均配送时间', '简介', '电话', '类型', '评分', '地址','经度','纬度', ]
            with open('c:/1/%s,%s.csv'%(latitude,longitude), 'w') as f:  #结果保存在根据经纬度命名的csv文件中
                f_csv = csv.DictWriter(f, headers)
                f_csv.writeheader()
                f_csv.writerows(res_list)
    else:
        time.sleep(10)
for x in range(47065,49999,106):
    for y in range(46090,49999,751):
        latitude = '29.' + str(x) #拼接生成经度
        longitude = '106.' + str(y) #拼接生成纬度
        url = 'https://www.ele.me/restapi/shopping/restaurants?extras[]=activities&geohash=ws101hcw982&latitude=%s&limit=30&longitude=%s&offset=0&terminal=web'%(latitude,longitude)
        restapi(url,latitude,longitude)
        print(url)
        time.sleep(5)

你可能感兴趣的:(根据坐标爬取饿了么商家信息)