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中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
python实现备份目录的方法
Aug 03 Python
python3 发送任意文件邮件的实例
Jan 23 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
PyTorch中常用的激活函数的方法示例
Aug 20 Python
详解python中index()、find()方法
Aug 29 Python
基于spring boot 日志(logback)报错的解决方式
Feb 20 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
Python 实现将某一列设置为str类型
Jul 14 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
php发送邮件的问题详解
2015/06/22 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
python logging.info在终端没输出的解决
2020/05/12 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
《秋姑娘的信》教学反思
2014/02/28 职场文书
《春雨》教学反思
2014/04/24 职场文书
寒假安全保证书
2015/02/28 职场文书
计划生育个人总结
2015/03/02 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
护理自荐信
2019/05/14 职场文书
Sql Server之数据类型详解
2022/02/28 SQL Server
vue实现在data里引入相对路径
2022/06/05 Vue.js