京东抢购助手源代码Fork自tychxn的JD-Assistant京东抢购助手、由于原作者已不再更新、刚好我又有需要、所以在此基础上进行了修改;
京东抢购助手包含登录,查询商品库存/价格,添加/清空购物车,抢购商品(下单),查询订单等功能;
本次主要新增了查询本地生活服务订单的验证码状态等信息.
安装依赖环境
`pip install -r requirements.txt`
JD-Assistant用到的第三方库
requests
Beautiful Soup
PyCryptodome
JD-Assistant主要功能
- 登陆京东商城(www.jd.com)
- 手机扫码登录
- 保存/加载登录cookies (可验证cookies是否过期)
- 商品查询操作
- 提供完整的
地址⇔ID
对应关系 - 根据商品ID和地址ID查询库存
- 根据商品ID查询价格
- 提供完整的
- 购物车操作
- 清空/添加购物车 (无货商品也可以加入购物车,预约商品无法加入)
- 获取购物车商品详情
- 订单操作
- 获取订单结算页面信息 (商品详情, 应付总额, 收货地址, 收货人等)
- 提交订单(使用默认地址)
- 直接提交
- 有货提交
- 定时提交
- 查询订单 (可选择只显示未付款订单)
- 查询本地生活服务订单中的验证码及其状态(验证码是否已消费)
- 其他
- 商品预约
- 用户信息查询
待完成的功能
- [✔] 订单验证码查询
- 抢优惠券
使用教程
初始化
from jd_assistant import Assistant
if __name__ == '__main__':
asst = Assistant() # 初始化
asst.login_by_QRcode() # 扫码登陆
asst.get_order_vercode() #获取本地服务订单验证码及状态
自动在屏幕上显示JD二维码、请扫码登录
直接提交订单示例
from jd_assistant import Assistant
if __name__ == '__main__':
asst = Assistant() # 初始化
asst.login_by_QRcode() # 扫码登陆
asst.clear_cart() # 清空购物车(可选)
asst.add_item_to_cart(sku_ids='100001324422') # 根据商品id添加购物车(可选)
asst.submit_order() # 直接提交订单
直接提交订单方式不常用,通常用于测试。
定时提交订单示例(常用)
from jd_assistant import Assistant
if __name__ == '__main__':
asst = Assistant() # 初始化
asst.login_by_QRcode() # 扫码登陆
asst.clear_cart() # 清空购物车(可选)
asst.add_item_to_cart(sku_ids='100001324422') # 根据商品id添加购物车(可选)
asst.submit_order_by_time(buy_time='2020-02-16 01:17:59.500', retry=4, interval=5) # 定时提交订单
# 3个参数:
# buy_time: 下单时间,例如:'2019-02-16 01:17:59.500'
# retry: 下单重复执行次数,可选参数,默认4次
# interval: 下单执行间隔,可选参数,默认5秒
定时提交订单最为常用,通常用于普通商品到特定时间后变价格购买。
有货提交订单示例
from jd_assistant import Assistant
if __name__ == '__main__':
sku_ids = '100001324422:1' # 商品id
area = '1_72_4211' # 区域id
asst = Assistant() # 初始化
asst.login_by_QRcode() # 扫码登陆
asst.buy_item_in_stock(sku_ids=sku_ids, area=area, wait_all=False, stock_interval=5)
# 6个参数:
# sku_ids: 商品id。可以设置多个商品,也可以带数量,如:'1234' 或 '1234,5678' 或 '1234:2' 或 '1234:2,5678:3'
# area: 地区id
# wait_all: 是否等所有商品都有货才一起下单,可选参数,默认False
# stock_interval: 查询库存时间间隔,可选参数,默认3秒
# submit_retry: 提交订单失败后重试次数,可选参数,默认3次
# submit_interval: 提交订单失败后重试时间间隔,可选参数,默认5秒
asst.buy_item_in_stock() 方法执行执行流程:
查询本地生活服务订单中的验证码信息
from jd_assistant import Assistant
if __name__ == '__main__':
asst = Assistant() # 初始化
asst.login_by_QRcode() # 扫码登陆
asst.get_order_vercode() #获取本地服务订单验证码及状态
默认查询最近20条订单信息、区分非本地生活订单数据