Let's do it together:智能购书订单生成
plan beta1
终极任务内容设想
将开智推荐书籍整理的豆瓣豆列,一键生成可购买且价格最优的购书订单组合。
注:本主题灵感来自 pythoncamp0 上海小组第一次线下聚会头脑风暴(2015/04/25)。感谢当时参与讨论的 @大猫Felix、@阡陌(cici1989)、@cp4、@石子佳。
解决了什么问题?
- 节省了从书籍推荐到购书之间的时间。
- 不同平台同一书籍的价格往往不同,需要生成价格最优的购物车组合。
- 当书籍缺货时,不能在同一平台买齐所有书籍,需要拆分订单。
基础信息及限制条件
- 每本书都对应唯一书籍 ISBN 值。
- 暂时考虑亚马逊、当当、京东三家。三家对应的起送价格和不满起送价的邮费分别为 99元|5元、79元|5元、49元|5元。
- 只考虑平台自营书籍,即限制每本书在同一时刻同一平台只有唯一价格。
- 不考虑电子书。
- 讨论价格最优时,暂不考虑满减等计算困难的活动。(如提前完成,可以作为进阶任务。)
- 豆瓣本身使用 python 写的,一定有可以调用的包。
难点及解决方案预判
- 输入书籍 list,输出购书组合,实际上是一个很长的任务链,应当进行拆分。
- 部分平台同时提供书籍的纸质版和电子版,但使用的是一个 ISBN,要给予区分。
- 可能出现部分书籍在所有平台都缺货的情况。此时应尽可能购买更多书籍。
- 每个平台都有起始运费,应当考虑。
- 不同平台缺货书籍不同,这是个大坑。以购买更多的书为前提。
任务梳理及拆分
- IMPORT: 书籍及对应在 3 个不同平台的价格
- PROCESS:
- 有 m 本书,每本书 3 种价格,总价格有 3^m 个组合。
- 每种平台都有付邮费和不付邮费两种情况,所以考虑邮费的话,共 8*(3^m)个价格组合,取最低的一种。
- 因为最后选价格最低的组合,所以可以定义缺货书籍的价格为一个较大值(比如10000),这样就可以价格的方式淘汰缺货的组合。
- EXPORT: 购物车转跳链接
step1:获取欲购买书籍列表
- INPUT: 网站地址(豆瓣豆列链接)
- PROCESS:
- 搜索抓取豆瓣豆列的数据的 py 模块
- 实际上从豆列链接到 ISBN 要经过两层:豆列--》书籍 ITEM--》对应的 ISBN
- 无法抓取:可以先手动输入 ISBN 的 list
- OUTPUT: 含有 m 个 ISBN 值的 list(假设豆列中有 m 本书)
step2:获取对应书籍的在不同网站的价格
- INPUT: 含有 m 个 ISBN 值的 list
- PROCESS:
- 根据 list 生成书籍的 price list
- list 中书籍为缺货状态时,定义该书籍价格为较大值(10000)
- OUTPUT: 书籍 list
step3:生成价格最优的组合
- INPUT: 书籍 list
- PROCESS:
- OUTPUT:3个不同平台的图书购买组合(list, ISBN),亚马逊(A1+A2+...+An)+京东(J1+J2+..+JN)+当当(D1+D2+...+Dn)
step4:转跳到对应的网站购物车(此步骤没想明白,可能有坑)
- INPUT: 不同平台的图书购买组合,亚马逊(A1+A2+...+An)+京东(J1+J2+..+JN)+当当(D1+D2+...+Dn)
- PROCESS:
- OUTPUT:转跳链接
进阶任务
- 扩展比价的平台数量
- 增加考虑满减活动
- 要增加书籍是否在满减范围的判断
- 满减活动的具体形式和金额可以手动输入
队友招募
- 可能需要 3 个队友,每人负责一个 step。
- 由于我的进度较慢(目前只到点彩画板),对代码和模块不够熟悉,需要 1 个完成之前所有进度的伙伴,来写前后的接口。
- 由于经验有限,应该还没有遍历所有的可能性。希望有队友可以补充。
- 上海的小伙伴优先。
.
QED