赛派号

没有开机广告的电视推荐 Python爬虫实战之爬取饿了么信息

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

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'"flors":.*?,"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) flors = jsonobj["flors"] restaurant_type = [] for f in flors: # 有些flors中只有一个值,有些有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文件: 在这里插入图片描述 外卖种类信息直方图 在这里插入图片描述 除简餐外,炸鸡炸串,盖浇饭、烧烤是夜间外卖三巨头,果汁奶茶和川湘菜,面食也是大家的心头好。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lsinopec@gmail.com举报,一经查实,本站将立刻删除。

上一篇 没有了

下一篇没有了