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函数式编程指南(四):生成器详解
Jun 24 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
python unittest实现api自动化测试
Apr 04 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
Django多数据库的实现过程详解
Aug 01 Python
python实现对服务器脚本敏感信息的加密解密功能
Aug 13 Python
详解Python 中sys.stdin.readline()的用法
Sep 12 Python
通过Python实现一个简单的html页面
May 16 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
python爬虫 requests-html的使用
Nov 30 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
浅析javascript闭包 实例分析
2010/12/25 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
python实现在sqlite动态创建表的方法
2015/05/08 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
详解python中@的用法
2019/03/27 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
台湾良兴购物网:EcLife
2019/12/01 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
几个人围成一圈的问题
2013/09/26 面试题
银行求职信个人范文
2013/12/16 职场文书
大学生职业生涯规划书范文
2014/01/14 职场文书
迎八一活动主题
2014/01/31 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
本科生自荐信
2014/06/18 职场文书
python flask框架快速入门
2021/05/14 Python
Java实现聊天机器人完善版
2021/07/04 Java/Android
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫