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学习笔记_数据排序方法
May 22 Python
python中星号变量的几种特殊用法
Sep 07 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
TensorFlow实现简单卷积神经网络
May 24 Python
Python创建一个空的dataframe,并循环赋值的方法
Nov 08 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
Django框架表单操作实例分析
Nov 04 Python
使用 Python 写一个简易的抽奖程序
Dec 08 Python
python 多进程队列数据处理详解
Dec 23 Python
Python发送手机动态验证码代码实例
Feb 28 Python
PythonPC客户端自动化实现原理(pywinauto)
May 28 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实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
php minixml详解
2008/07/19 PHP
php生成缩略图的类代码
2008/10/02 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
python一些性能分析的技巧
2020/08/30 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
车间组长岗位职责
2013/12/20 职场文书
应届毕业生个人求职自荐信
2014/01/06 职场文书
安全生产活动月方案
2014/03/09 职场文书
低碳环保演讲稿
2014/08/28 职场文书
可怜妈妈观后感
2015/06/09 职场文书