Python之京东商品秒杀的实现示例


Posted in Python onJanuary 06, 2021

1 环境

操作系统:Windows 10
Python版本:3.9.0
Google Chrome  87.0.4280.88
ChromeDriver  87.0.4280.88
PyCharm 2020.2.3 x64

2 需求分析&前期准备

2.0 需求分析

目标是秒杀京东的订单,这里面有几个关键点,首先需要登录京东,其次你需要准备好订单,最后要在指定时间快速提交订单。
登录京东,这里就要用到一个爬虫利器Selenium,它是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等等操作,所见即所得。另外对于一些 JavaScript 渲染的页面来说,此种抓取方式非常有效。

2.1 Selenium的安装

Selenium 的安装很简单,dos命令行:

pip3 install selenium

Python之京东商品秒杀的实现示例

Selenium安装好之后,并不能直接使用,它需要与浏览器进行对接。这里拿Chrome浏览器为例。若想使用Selenium成功调用Chrome浏览器完成相应的操作,需要通过ChromeDriver来驱动。

2.2 ChromeDriver的安装

这里是ChromeDriver的官方下载地址。

链接:https://chromedriver.storage.googleapis.com/index.html
下载之前先来确认下我们使用的Chrome浏览器版本。

Python之京东商品秒杀的实现示例

通过ChromeDriver的下载链接,找到与之对应的Chrome浏览器版本,根据你电脑系统的平台类型进行下载。

Python之京东商品秒杀的实现示例

下载完成之后,解压,将其放置在Python安装路径下Scripts文件夹中即可

Python之京东商品秒杀的实现示例

用PyCharm执行如下代码:

from selenium import webdriver
# 打开Chrome浏览器
driver = webdriver.Chrome()

成功打开浏览器,则证明ChromeDriver版本没问题,即可正常使用Selenium。

from selenium import webdriver
import datetime
import time
# 打开Chrome浏览器
driver = webdriver.Chrome()
 
def auto_buy(username, password, purchase_list_time):
  print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "打开登陆界面")
  driver.get("https://passport.jd.com/new/login.aspx")
  print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "开始填写账号密码")
  driver.find_element_by_link_text("账户登录").click()
  driver.find_element_by_name("loginname").send_keys(username)
  driver.find_element_by_name("nloginpwd").send_keys(password)
  driver.find_element_by_id("loginsubmit").click()
  #print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "手动拼图验证")
  #time.sleep(10) #此处睡眠时间用来手动拼图验证
  print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),"登陆成功")
  print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "等待时间到达抢购时间:",purchase_list_time, "......")
  while True:
    count = 0
    for buytime in purchase_list_time:
      nowtime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
      if nowtime == buytime:
        try:
          count += 1
          print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "开始第 %s 次抢购......"%count)
          print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "打开购物车并选中商品")
          driver.get("https://cart.jd.com/cart_index") # 打开购物车并选中商品
          # 如果没有全选,点击全选
          if not driver.find_element_by_class_name('jdcheckbox').is_selected():
            driver.find_element_by_class_name('jdcheckbox').click()
          print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "点击去结算")
          driver.find_element_by_link_text("去结算").click() # 去结算
          print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "点击提交订单")
          time.sleep(5)  #提交订单前必须等待几秒【感觉跟电脑性能快慢有关,不卡的电脑可以适当降低尝试】
          if driver.find_element_by_id("order-submit"):
            driver.find_element_by_id("order-submit").click() # 提交订单
          print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),"订单提交成功,请前往订单中心待付款付款")
          print("")
          continue
        except Exception as e:
          print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "抢购出现异常,重新抢购: ", e)
          continue
    time.sleep(0.001)
 
purchase_list_time = [
  "2020-12-25 10:00:00",
  "2020-12-25 10:00:01",
  "2020-12-25 10:00:02",
  "2020-12-25 10:00:03",
  "2020-12-25 10:00:04",
  "2020-12-25 10:00:05",
]
auto_buy('帐号', '密码', purchase_list_time)

预约商品到购物车——>修改代码抢购时间——>用PyCharm运行代码即可。

到此这篇关于Python之京东商品秒杀的实现示例的文章就介绍到这了,更多相关Python 京东商品秒杀内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python语言技巧之三元运算符使用介绍
Mar 04 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
Python3处理HTTP请求的实例
May 10 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
python设定并获取socket超时时间的方法
Jan 12 Python
Python语法分析之字符串格式化
Jun 13 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
Jun 21 Python
Python音频操作工具PyAudio上手教程详解
Jun 26 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
pip安装python库的方法总结
Aug 02 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
Python实现双向链表基本操作
May 25 Python
Python实现小黑屋游戏的完整实例
Jan 06 #Python
Jupyter Notebook 安装配置与使用详解
Jan 06 #Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 #Python
python requests库的使用
Jan 06 #Python
Python 实现进度条的六种方式
Jan 06 #Python
基于Python实现天天酷跑功能
Jan 06 #Python
python 下载文件的几种方法汇总
Jan 06 #Python
You might like
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
JavaScript实现简单评论功能
2017/08/17 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
JavaScript学习笔记之DOM基础操作实例小结
2019/01/09 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
Python实现提取文章摘要的方法
2015/04/21 Python
基于python实现名片管理系统
2018/11/30 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
银行实习人员自我鉴定
2013/09/22 职场文书
资料员岗位职责
2013/11/17 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
python办公自动化之excel的操作
2021/05/23 Python
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python