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的print用法示例
Feb 11 Python
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
Python入门教程之if语句的用法
May 14 Python
python实现对文件中图片生成带标签的txt文件方法
Apr 27 Python
python进程和线程用法知识点总结
May 28 Python
3行Python代码实现图像照片抠图和换底色的方法
Oct 10 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 Python
使用OpenCV实现道路车辆计数的使用方法
Jul 15 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
解决pytorch 的state_dict()拷贝问题
Mar 03 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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
Python读写配置文件的方法
2015/06/03 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
python使用knn实现特征向量分类
2018/12/26 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
Python中常见的数制转换有哪些
2020/05/27 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
Python如何读写二进制数组数据
2020/08/01 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
高山背包:High Sierra
2017/11/23 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
销售演讲稿范文
2014/01/08 职场文书
火锅店创业计划书范文
2014/02/02 职场文书
捐助倡议书范文
2014/04/15 职场文书
产品开发计划书
2014/04/27 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
银行自荐信范文
2015/03/25 职场文书
保护动物的宣传语
2015/07/13 职场文书
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers