Python日常-女神要减肥,我打辅助!
一个蝉鸣沉醉的晚上,我和女神坐在沙发上,呆呆地看着鱼缸里的小鱼儿自由自在地游来游去。
突然,女神摸着自己的肚子,惊叹一声:哇!三个月大了!
我怔了一下,急切地问道:啥时候的事?怎么不告诉我?
“就这几个月呀!不知不觉就长了这么多膘!”
“我靠!我还以为你有了!”
女神嘤嘤地锤着我的胸,喊着要减肥!
“没问题,我助你!”
所谓“管住嘴,迈开腿!”减肥也是有方法论的,我们要用科学的方法减肥。管住嘴,不是不吃,而是要保证每天摄入的能量小于每天消耗的能量。
我还在说着方法论,女神已经打开手机,在网上搜减肥食谱了,看来是真的下决心了。
咱也不能落后呀,我看到她在一个叫“美食杰”的网页上看菜谱,我就说不需要这么麻烦,一页一页地翻太累了,给我5分钟,我给你这个网站上所有的减肥食谱。
准备食材
我打开电脑,在浏览器上输入网址,然后迅速地定位到“减肥食谱”的分类上:
打开这个菜谱页面,我发现这个页面是以卡片的形式来呈现每一个菜谱,然后底下是分页。
对于分页的页面,我们首先看 URL 的变化,如果 URL 有规律,那就很容易解决,这个页面的分页恰巧是 URL 上可以体现页码的变化(第二一页是 p2 结尾):
https://www.meishij.net/jiankang/jianfei/p2/
接着,我们来看每个菜谱的细节:
我们可以看到这个页面很有规律,每个菜谱和其对应的材料都是一样的格式。
有了这些基础,我的思路就很清晰了:
通过拼接 URL 实现分页查询,通过解析相同格式的 HTML 页面来获取菜谱和材料。
烹饪
我写一个方法,请求页面,然后从页面中解析出菜名和材料,由于不同的菜谱中使用的材料可能会有重复,所以我对材料做了去重处理。
import requests
from lxml import etreedef getRecipe(url, pageNum, foodFileName, meterialFileName):foods = []meterials = []for i in range(1, pageNum):rurl = url % i # 构建网址,用网址前半部分相同的,拼接后边的数字res = requests.get(rurl).text # 用requests库的get函数来获得网页数据res_xpath = etree.HTML(res) # 将获得的数据转化为xpath格式foods.extend(res_xpath.xpath('//*/a[@class="list_s2_item_info"]/strong/text()')) # 用浏览器获得所需信息的xpath位置meterial = res_xpath.xpath('//*/a[@class="list_s2_item_info"]/span[@class="sc"]/text()')for m in meterial:meterials.extend(m.split(','))for food in foods: # 依次从获得的总食谱中提取菜名with open(foodFileName + ".txt", 'a', encoding="utf-8") as f:f.write(food + '\n')undupMeterials = list(set(meterials)) # 对材料去重for m in undupMeterials:with open(meterialFileName + ".txt", 'a', encoding="utf-8") as f:f.write(m + '\n')return foods, undupMeterialsfitfoods, fitmeterials = getRecipe('https://www.meishij.net/jiankang/jianfei/p%s/', 6, 'fitfood', 'fitmeterial')
下碟
最后的结果我将菜谱和食材分别写到两个文件中,然后将文件发给女神了。
女神掐表一算,说:亲爱的,你太快了!
我翻了一个白眼,说到:下次不要这样说,要说“亲爱的,你太帅了!”。
她锤了了一下,红着脸说“你真坏!”
Python日常-女神要减肥,我打辅助!相关推荐
- 使用 Python 为女神挑选口红 ,成功把女神拿下,你学会了吗
口红对于女生来说永远不嫌多,而男生也搞不明白珊瑚红.番茄色.斩男色等等颜色有什么区别,不都是红色么?当送给女神的口红是她不适合的,那结果就是口红进入垃圾箱还算是轻的,重则拉黑处理.男生们也不用着急,我 ...
- python写一个表白程序_用Python个女神做一个表白神器
用Python给女神表白 情人节刚刚过去,但男同胞们对女神的暗恋愈加热烈,想尽一切办法表白,今天,咱们就用Python制作一个表白神器. 程序介绍 运用pygame制作一个小游戏,当女神用鼠标点击&q ...
- python+opencv别踩白块儿游戏辅助,一天一个opencv小项目(已开源)
python+opencv别踩白块儿游戏辅助,一天一个opencv小项目(已开源) 见链接
- Python日常+笔面试
Python日常学习 三维转二维: 例:X(200,200,106)->newX(40000,106) newX = np.reshape(X, (-1, X.shape[2])) 二维变三维: ...
- Python日常(13):字符串的格式化输出(format方法和%输出)
目录 前沿 字符串的格式化输出 (1)format方法 ①基本输出格式 ②实例 (2)%输出方法 ①基本输出格式 ②实例 作者的话 参考文献 前沿 前面我们基本上已经把python基础的操作初略的说完 ...
- python日常总结
项目场景: `python日常简单库的使用如:txt文件操作.numpy操作.字典操作.取整操作等. python读写txt # 1.读取所有行 with open('test.txt','r', e ...
- python日常记账本源代码,基于PySide6,支持快速查询、绘制图表
python日常记账本源代码,基于PySide6(Qt for Python 6)的账本,界面简洁.功能强大,支持保存文件.快速查询.绘制图表等,是平时记账的不错选择.账目查询.账本编辑.添加/删除. ...
- Python日常用法—将列表信息写入到csv文件、列表中的元素直接更改
Python日常用法-将列表信息写入到csv文件 1.模板 # 编写数据 import csvdata_list = [{'皇马球员': 'C罗', '号码': '7', '国籍': '葡萄牙'}, ...
- 【python日常学习】爬取4K桌面壁纸
[python日常学习]爬取4K桌面壁纸 这个网站都是4K的桌面壁纸. 不多说,直接上代码 import re import requests import osdef get_page():page ...
最新文章
- URAL 1203 Scientific Conference(贪心 || DP)
- python图像配准的原理_python利用sift和surf进行图像配准
- 阿里云E-HPC联合安世亚太、联科集团共建云超算生态
- pam mysql编译安装_pam_mysql编译过程排错
- Docker 常见问题
- java 鼠标单击_不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件
- boost::function模块右值的测试程序
- 扫地机器人湿地_什么品牌的扫地机器人性价比最高?
- Django 上传附件报The number of GET/POST parameters exceeded settings.DATA_UPLOAD_MAX_NUMBER_FIELDS错误
- 打造AS酷炫dimens适配插件
- mysql下的常用操作
- hdu 4928 Series 2 (优化+模拟)
- 抖音云蹦迪源码/很火的直播打赏类项目源码
- 汽车域控制器架构和OTA的心脏:网关的四大豪门(上)
- 媒体查询之响应式布局
- 云队友丨任正非内部演讲:星光不问赶路人
- 温一壶月光下的酒——林清玄
- clientX、pageX、screenX以及offsetX区别
- 求薪水最高的第6到第10个人
- [圣诞大礼]Macintosh苹果机精品游戏合集
热门文章
- Word 排版:插入题注
- HIT-2022spr-近世代数期末补天
- 逆战无法显示服务器,玩逆战游戏不显示小地图。怎么办?
- python连接sql server报20002错误_数据库连接错误:20009, b'DB-Lib error message 20009
- MATLAB神经网络学习笔记之:对线性神经网络进行自适应训练
- Python将对象的值传给列表,打印列表返回<__main__.Card object at 0x000001AA99E4E438>
- Ofbiz Web详解(Ofbiz后门页)
- Unity 制作抖音同款 罗马时钟
- MIPS 指令集(共 31条)
- java基于SpringBoot+Vue+nodejs的网上订菜买菜果蔬商城系统 element