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 25 Python
python中遍历文件的3个方法
Sep 02 Python
Python中Django框架利用url来控制登录的方法
Jul 25 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
python_array[0][0]与array[0,0]的区别详解
Feb 18 Python
Python3 利用face_recognition实现人脸识别的方法
Mar 13 Python
Python tkinter制作单机五子棋游戏
Sep 14 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
python实现手机推送 代码也就10行左右
Apr 12 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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
我的论坛源代码(五)
2006/10/09 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
js获取客户端外网ip的简单实例
2013/11/21 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
js实现时间日期校验
2020/05/26 Javascript
Eclipse + Python 的安装与配置流程
2013/03/05 Python
Python使用django搭建web开发环境
2017/06/09 Python
Django自定义认证方式用法示例
2017/06/23 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
网上书店创业计划书
2014/01/12 职场文书
报社实习生自荐信
2014/01/24 职场文书
初三学生评语大全
2014/04/24 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
促销活动总结怎么写
2014/06/25 职场文书
五五普法心得体会
2014/09/04 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
孔子观后感
2015/06/08 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
股权投资协议书
2016/03/23 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS