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采集腾讯新闻实例
Jul 10 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
python中csv文件的若干读写方法小结
Jul 04 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
Pytorch十九种损失函数的使用详解
Apr 29 Python
pyecharts调整图例与各板块的位置间距实例
May 16 Python
python Protobuf定义消息类型知识点讲解
Mar 02 Python
Python基础之hashlib模块详解
May 06 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
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
js实现放大镜特效
2017/05/18 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
Python 除法小技巧
2008/09/06 Python
在Mac OS上搭建Python的开发环境
2015/12/24 Python
python连接数据库的方法
2017/10/19 Python
人工神经网络算法知识点总结
2019/06/11 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
简单了解django文件下载方式
2020/02/10 Python
python调用摄像头的示例代码
2020/09/28 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
幼师自我鉴定范文
2013/10/01 职场文书
大学生志愿者感言
2014/01/15 职场文书
责任书格式范文
2014/07/28 职场文书
一年级语文上册复习计划
2015/01/17 职场文书
活动总结书怎么写
2015/05/11 职场文书
律师催款函范文
2015/06/24 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
mysql函数之截取字符串的实现
2022/08/14 MySQL