闲来无事,爬取大学城周边的饿了么夜晚外卖信息打发时间。
完整代码放在Github上:https://github.com/why19970628/Python_Crawler/tree/master/ele_me
数据来源平台:饿了么
地点选择:新乡大学城(夜晚)
抓取地址https://www.ele.me/place/wtw0tgvd7yr
抓取数据:店名(name)和店的口味(flavors)。

1.首先观察网页结构,需要登录饿了么官网,F12查看在这里插入图片描述
找到以restaurants开头的信息,并双击打开

在这里插入图片描述
2.这时,可以观察到网页的结构信息,这时就比较简单了,
观察网页URL,发现‘offset=’在控制网页页数,limit为24。

def Getdata(page):  # 爬虫
    print('正在爬取第{}页'.format(page/24))
    url = 'https://www.ele.me/restapi/shopping/restaurants?extras%5B%5D=activities&geohash=ww30b9kh3zmq&latitude=35.295722&limit=24&longitude=113.933798&offset='+str(page)+'&terminal=web'
    print(url)
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36",
               "cookie": "你的cookie信息"}
    html = requests.get(url, headers=headers)
    content = re.findall(r'"flavors":.*?,"next_business_time"', html.text)  # 用正则获取包含数据的那部分
    print(content)

    for con in content:
        #print(con)
        jsonstring = "{" + con.replace(',"next_business_time"', "}")  # 完善格式,使其成为准确的json格式
        #print(jsonstring)
        jsonobj = json.loads(jsonstring)
        restaurant_id = jsonobj["id"]
        restaurant_name = jsonobj["name"].encode("gbk", "ignore").decode("gbk")
        print(restaurant_name)
        flavors = jsonobj["flavors"]
        restaurant_type = []
        for f in flavors:  # 有些flavors中只有一个值,有些有2个,所以要for循环
            restaurant_type.append(f["name"])
        restaurants.append(restaurant_name)  # 用于后面词云图
        foodtype.append(restaurant_type)  # 用于后面条形图
        data.append([restaurant_id, restaurant_name, restaurant_type])
    with open("elemedata.csv", "w", newline="") as f:  # 保存数据到本地
        writer = csv.writer(f)
        writer.writerow(["restaurant_id", "restaurant_name", "restaurant_type"])
        for d in data:
            writer.writerow(d)
    return restaurants, foodtype  # 返回值应用到下面2个函数

爬取结果如下
在这里插入图片描述
csv文件:
在这里插入图片描述
外卖种类信息直方图
在这里插入图片描述
除简餐外,炸鸡炸串,盖浇饭、烧烤是夜间外卖三巨头,果汁奶茶和川湘菜,面食也是大家的心头好。

词云图在这里插入图片描述
观察在夜晚大学城炸鸡,汉堡类要比面食类更受欢迎,粥、香锅、麻辣烫也十分受欢迎。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐