返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python显示点过的外卖
  • 352
分享到

怎么用Python显示点过的外卖

2023-06-02 04:06:44 352人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“怎么用python显示点过的外卖”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python显示点过的外卖”吧!通过手机&验证码登录自己的饿了么账号,成功之后会返回

本篇内容主要讲解“怎么用python显示点过的外卖”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python显示点过的外卖”吧!

通过手机&验证码登录自己的饿了么账号,成功之后会返回当前用户的user_id 和 登录Cookie。这两个信息为后续的请求提供必要的信息。

一开始访问订单,是这样的请求

h6.ele.me/restapi/bos/v2/users/26803312/orders?limit=8&offset=0

h6.ele.me/restapi/bos/v2/users/26803312/orders?limit=8&offset=8

h6.ele.me/restapi/bos/v2/users/26803312/orders?limit=8&offset=16

当继续下拉,出现"查看三个月前的外卖订单"按钮时,请求是这样的

h6.ele.me/restapi/bos/v2/users/26803312/old_orders?limit=8&from_time=

h6.ele.me/restapi/bos/v2/users/26803312/old_orders?limit=8&from_time=1557718107

from_time的值在上次请求的响应中可以看到:

怎么用Python显示点过的外卖

获取订单部分代码如下所示:

""" 获取近3个月订单"""def get_new_order(): num = 0 while 1: # 偏移量 offset = num * limit response = requests.get(url + f'?limit={limit}&offset={offset}', headers=headers, verify=False) resp_JSON = response.json() insert_monGo(resp_json) # 当响应订单数小于8时 跳出循环 if len(resp_json) < 8: print('====================') break num += 1"""历史订单"""def history_order(): from_time = '' while 1: response = requests.get(old_url + f'?limit={limit}&from_time={from_time}', headers=headers, verify=False) resp_json = response.json() from_time = resp_json['from_time'] orders = resp_json['orders'] # 经过测试,最后一个订单时,会在请求一次 响应为空 if not orders: break insert_mongo(orders)

运行之后发现,这一年多的时间,光外卖竟然花费了1W多一点。爬取的数据可以选择将数据保存在csv文件中,也可以选择Mongod。这里我是插入到了MongoDB中。

def insert_mongo(resp_json): if not resp_json: return  for i in resp_json: # 菜品 foods_group = i['basket']['group'][0] for j in foods_group: j['name'] = clean_data(j['name']) with open('foods_name_banxia.txt', 'a+') as f: f.write(j['name'] + '\n') # 将菜品写入文件,方便处理 # 配送费 deliver_price = 0 if 'deliver_fee' in i['basket'].keys(): deliver_price = i['basket']['deliver_fee']['price'] # 计算总花费 global total total += i['total_amount'] # 餐馆名 restaurant_name = clean_data(i['restaurant_name']) with open('restaurant_name_banxia.txt', 'a+') as f: f.write(restaurant_name + '\n') # 记录餐馆名 clo.insert_one({ # 餐馆名 'restaurant_name': restaurant_name, # 订单时间 fORMatted_created_at也可以取,但是近期的会显示xx小时之前 'created_timestamp': time_convert(i['created_timestamp']), # 价格 'total_amount': i['total_amount'], 'foods_group': foods_group, 'deliver_price': deliver_price })

在查看数据过程中,发现有的菜品和店铺名后面都有括号、或者方括号等特殊字符,里面的信息对我们来说也没有什么价值。可以简单的进行处理一下。

import redef clean_data(data): a = re.sub("\\(.*?\\)|\\(.*?\\)|\\[.*?\\]|\\【.*?\\】|[A-Za-z0-9\@\\!\/]", "", data) a = a.replace('盒', '').replace('克', '').replace('个', '')\ .replace('大份', '').replace('小份', '').replace('瓶', '').replace('组', '').replace(' ','') return a

这样,我们就将订单中的信息存在了数据库中。为了方便统计我将每个订单的菜品、以及餐馆名保存在了txt文件中。

可以通过Wordcloud将餐品进行一个简单的可视化

from random import randintfrom matplotlib import pyplot as pltfrom wordcloud import WordClouddef random_color(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None): """Random Color func""" r = randint(30, 255) g = randint(30, 180) b = int(100.0 * float(randint(60, 120)) / 255.0) return "rgb({:.0f}, {:.0f}, {:.0f})".format(r, g, b)content = open('foods_name.txt', encoding='utf-8').read()wordcloud = WordCloud(background_color="white", width=1000, height=600, max_font_size=50, font_path='/System/Library/Fonts/PingFang.ttc', # 需要根据实际操作系统更换路径 color_func=random_color).generate(content)plt.imshow(wordcloud)plt.axis("off")plt.savefig('ele_wordcloud.png', format='png', dpi=200)

结果如下,有没有口味一样的同学呢?

怎么用Python显示点过的外卖

同样我们可以在终端通过sort命令去常光顾的餐馆进行统计。

  • sort -n 按照数值大小排序 升序

  • sort -r 降序排列

  • uniq -c 去重和统计

  • head -5 展示前5条

cat mao_out.txt | sort | uniq -c | sort -rg | head -5

结果如下 去的最多的是贡贡米线和张亮麻辣烫,统计范围内均光顾了14次。

python3XXXair:$ cat restaurant_name.txt |sort|uniq -c| sort -rg| head -5 14 贡贡米线 14 张亮麻辣烫 13 京客隆 11 沁香缘家常菜 11 小巷麻辣香锅

可以通过matplotlib去统计一下每次定外卖的价格,并展示出来。

import pymongoimport matplotlib.pyplot as pltclient = pymongo.MongoClient('mongoDB://localhost:27017/')db = client['ele']clo = db['info_banxia']result = clo.find({})y = [i['total_amount'] for i in result]x = [i for i in range(len(y))]plt.ylabel("The unit price")plt.xlabel("Times")plt.plot(x, y)plt.show()

结果图:

怎么用Python显示点过的外卖

可以看出,大部分价格在20 ~ 40 之间, 因为有时候为了满减,大部分都是跟同事朋友一起拼单。偶尔超过这个范围是买的水果、药等一些商品。

从这些数据中,我们同样得出,哪个月定外卖次数最为频繁。

# 该月定外卖次数count = []for i in data: ele_count = clo.count({'created_timestamp': re.compile(i)}) count.append(ele_count)plt.scatter(data, count)plt.xticks(rotation=45)plt.show()

怎么用Python显示点过的外卖

可以看出 18年3月定了22次外卖是最多的一次。11月份的时候定外卖次数最少。

到此,相信大家对“怎么用Python显示点过的外卖”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么用Python显示点过的外卖

本文链接: https://lsjlt.com/news/228729.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么用Python显示点过的外卖
    本篇内容主要讲解“怎么用Python显示点过的外卖”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python显示点过的外卖”吧!通过手机&验证码登录自己的饿了么账号,成功之后会返回...
    99+
    2023-06-02
  • Java怎么实现校园外卖点餐系统
    这篇文章主要介绍“Java怎么实现校园外卖点餐系统”,在日常操作中,相信很多人在Java怎么实现校园外卖点餐系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java怎么实现校园外卖点餐系统”的疑惑有所帮助!...
    99+
    2023-06-29
  • macbookpro怎么外接显示器
    本篇内容主要讲解“macbookpro怎么外接显示器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“macbookpro怎么外接显示器”吧! macbookpr...
    99+
    2022-12-28
    macbookpro
  • 亚马逊卖家账户显示信用卡无效怎么办
    信用卡过期或信息错误:卖家应该更新其信用卡信息,以确保账户的正常使用。 绑定的信用卡信息不正确:卖家应该检查他们绑定的信用卡信息是否正确。 未及时更新密码:如果卖家没有及时更新密码,账户可能会被盗。 为了解决这些问题,卖家可以采取以下...
    99+
    2023-10-27
    亚马逊 卖家 账户
  • Angular中怎么通过点击按钮控制隐藏和显示
    本篇文章给大家分享的是有关Angular中怎么通过点击按钮控制隐藏和显示,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体代码如下:<!...
    99+
    2024-04-02
  • html怎么实现只显示表格的外边框
    这篇文章主要介绍“html怎么实现只显示表格的外边框”,在日常操作中,相信很多人在html怎么实现只显示表格的外边框问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html怎么...
    99+
    2024-04-02
  • 笔记本电脑怎么外接显示器
    这篇文章主要介绍“笔记本电脑怎么外接显示器”,在日常操作中,相信很多人在笔记本电脑怎么外接显示器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”笔记本电脑怎么外接显示器”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-28
  • Python中的字符串怎么显示
    本篇内容介绍了“Python中的字符串怎么显示”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Python编程语言的应用,对于开发人员来说是一...
    99+
    2023-06-17
  • idea怎么显示本地修改过的文件
    要显示本地修改过的文件,可以按照以下步骤进行操作:1. 打开终端或命令提示符。2. 切换到你的项目目录,使用 cd 命令来切换目录。...
    99+
    2023-10-18
    idea
  • 怎么使用Python VTK高亮显示actor
    今天小编给大家分享一下怎么使用Python VTK高亮显示actor的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-06-30
  • react怎么实现点击隐藏显示
    本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。react怎么实现点击隐藏显示?react中元素的显示和隐藏方式的使用 在react中,我们有常用的有四种方式来显示元素的显示和隐藏,和vue不同,vue...
    99+
    2023-05-14
    React
  • 如何利用PHP开发点餐系统的外卖配送功能?
    如何利用PHP开发点餐系统的外卖配送功能?随着互联网的发展和人们生活水平的提高,外卖业务迅速兴起。许多餐馆开始通过线上平台来提供外卖服务,而这就需要一个完善的点餐系统来支持外卖配送功能。PHP作为一种简单易学、功能强大的编程语言,被广泛应用...
    99+
    2023-11-01
    选择菜品并下单。
  • linux外接显示器无画面怎么解决
    如果Linux电脑连接到外部显示器时没有画面,可以尝试以下解决方法:1. 检查连接线:确保连接线(HDMI、VGA、DVI等)正确连...
    99+
    2023-09-09
    linux
  • Win8怎么取消密码明文显示功能让其以点显示
      Win8系统中,输入复杂密码时怕出现错误,启用密码显示功能(Windows8系统如何查看明文密码),也就是密码框边的眼睛。如图:   点击该按钮就会明文显示当前输入的密码,这在输入复杂密码的时候确实能...
    99+
    2022-06-04
    明文 让其 密码
  • 解决el-tree节点过滤不显示下级的问题
    目录显示下级的方法我们需求方觉得还可以再优化思路总结显示下级的方法 elementui的节点过滤默认是不显示下级的 代码在 :filter-node-method="fil...
    99+
    2023-05-17
    el-tree节点过滤 el-tree过滤不显示下级 节点过滤不显示下级
  • 怎么显示python函数路径
    在python中使用getfile()方法获取函数路径,具体方法如下:import osimport inspectimport external_defdef foo():passprint os.path.abspath(inspect...
    99+
    2024-04-02
  • python怎么显示当天日期
    在python中使用time.strftime函数显示当天日期,具体方法如下:time.strftime:time.strftime()函数的作用是用于收以时间元组,并返回字符串表示的当地时间。time.strftime()函数语法:tim...
    99+
    2024-04-02
  • Ajax请求过程中怎么显示进度
    本篇内容介绍了“Ajax请求过程中怎么显示进度”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Ajax在Web应用中使用得越来越频繁。在进行A...
    99+
    2023-06-17
  • 使用python怎么读取图片并显示
    今天就跟大家聊聊有关使用python怎么读取图片并显示,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。OpenCVOpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学...
    99+
    2023-06-14
  • 国外空间乱码显示问题怎么解决
    国外空间乱码显示问题通常是由于字符编码不匹配造成的。要解决这个问题,可以尝试以下几种方法: 修改浏览器编码设置:在浏览器中尝试修...
    99+
    2024-04-09
    国外空间
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作