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简单进程锁代码实例
Apr 27 Python
Python实现股市信息下载的方法
Jun 15 Python
利用Python抓取行政区划码的方法
Nov 28 Python
python实现两个文件合并功能
Apr 01 Python
python使用suds调用webservice接口的方法
Jan 03 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
Django的Modelforms用法简介
Jul 27 Python
Python 静态方法和类方法实例分析
Nov 21 Python
Python opencv相机标定实现原理及步骤详解
Apr 09 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 Python
详解Python类和对象内容
Jun 22 Python
一篇文章弄懂Python中的内建函数
Aug 07 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
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
PHP使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
FF IE兼容性的修改小结
2009/09/02 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
浅谈JavaScript 框架分类
2014/11/10 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
Python  连接字符串(join %)
2008/09/06 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
Python中psutil的介绍与用法
2019/05/02 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
店面出租协议书范本
2014/11/28 职场文书
2014年环保局工作总结
2014/12/11 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android