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中logging模块的用法实例
Sep 29 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
python实现xlsx文件分析详解
Jan 02 Python
tensorflow实现对图片的读取的示例代码
Feb 12 Python
pytorch permute维度转换方法
Dec 14 Python
基于Python对数据shape的常见操作详解
Dec 25 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
Python通过len函数返回对象长度
Oct 22 Python
Python环境搭建过程从安装到Hello World
Feb 05 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数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
纯php生成随机密码
2015/10/30 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
javscript对象原型的一些看法
2010/09/19 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
2013/09/25 Javascript
中止javascript执行的方法
2014/02/14 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
js+css实现打字效果
2020/06/24 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Python 加密与解密小结
2018/12/06 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
详解用python写一个抽奖程序
2019/05/10 Python
Python3 合并二叉树的实现
2019/09/30 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
python 实现IP子网计算
2021/02/18 Python
详解rem 适配布局
2018/10/31 HTML / CSS
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
初中同学聚会感言
2014/02/11 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
校园文明标语
2014/06/13 职场文书
银行贷款委托书范本
2014/10/11 职场文书
羊脂球读书笔记
2015/06/30 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
600字作文之感受大自然
2019/11/27 职场文书