这两天一直忙于考试和课程设计,就没什么时间写推文啦,话说回来,618购物节不是要来了吗?本期推文就和大家聊聊商品自动抢购是如何实现的。
这个京东抢购脚本程序是下午花了大概半个小时写的,实现了商品的自动抢购功能。由于写得比较仓促,还有很多不完美的地方,程序仅供参考,请勿用于商业用途。接下来就和大家聊聊商品自动抢购程序是如何实现的呢?
思路分析:
商品抢购的思路非常简单,主要就是模仿购物流程,让程序解放我们的双手。
我们先来想一下,平时我们是如何购物的呢?我们首先需要把商品加入购物车,然后点击购物车结算,再填写收货地址等信息,最后提交订单即可。大家不要以为上面写的购物流程都是废话,谁还不知道这个啊,其实不然,解决问题的第一步是分析问题,其次才是开始写代码,说白了,代码只是把我们的分析的思路写一遍而已。既然问题已经分析清楚了,那我们就开始写代码吧。
代码如下:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import datetime
import time
class QiangGou(object):
# 初始化参数
def __init__(self,buyTime,linkUrl):
self.driver_path = "C:\chromedriver/chromedriver.exe"
self.login_url = "https://passport.jd.com/new/login.aspx"
self.index_url = "https://www.jd.com/"
self.shop_url = linkUrl
self.driver = webdriver.Chrome(executable_path=self.driver_path)
self.buyTime = buyTime
# 提前扫码登录
def login(self):
self.driver.get(self.login_url)
WebDriverWait(self.driver, 1000).until(
EC.url_to_be(self.index_url)
)
print("登录成功",datetime.datetime.now().strftime("%Y-%m-%d:%H-%M-%S.%f"))
# 抢购商品
def order(self):
self.driver.get(self.shop_url)
try:
while True:
nowTime = int(round(time.time()))
buyTime = int(time.mktime(time.strptime(self.buyTime, "%Y-%m-%d:%H-%M-%S")))
print("抢购到计时:", buyTime - nowTime)
if nowTime > buyTime:
# 点击抢购按钮
while True:
order_button = self.driver.find_element_by_xpath('//*[@id="btn-reservation"]')
if order_button:
order_button.click()
break
else:
print("没有找到抢购按钮")
# 点击我的购物车
while True:
car_button = self.driver.find_element_by_xpath('//*[@id="settleup-2014"]/div[1]/a')
if car_button:
car_button.click()
break
else:
print("没有找到我的购物车按钮")
# 点击购物车结算
self.driver.switch_to.window(self.driver.window_handles[1]) # 切换到新窗口
while True:
pay_button = self.driver.find_element_by_xpath(
'//*[@id="cart-floatbar"]/div/div/div/div[2]/div[4]/div[1]/div/div[1]/a')
if pay_button:
pay_button.click()
print("点击结算页面成功")
break
else:
print("没有找到结算按钮")
# 提交订单
while True:
submit_button = self.driver.find_element_by_xpath('//*[@id="order-submit"]')
if submit_button:
submit_button.click()
print("订单提交成功,请尽快支付")
break
else:
print("没有找到订单提交按钮")
except:
print("请重新运行脚本")
# 开始抢购
def run(self):
# 登录京东
self.login()
# 商品抢购
self.order()
# 2020-06-16:16-47-35
# "https://item.jd.com/100010879626.html"
if __name__ == '__main__':
buyTime = input("请输入抢购时间:(格式为:2020-06-16:16-47-35)")
linkUrl = input("请输入商品连接")
p = QiangGou(buyTime,linkUrl)
p.run()
如果大家暂时还看不懂上面的代码也没有关系(大概理解如何实现的即可),代码翻译成大白话就是使用selenium自动化测试工具模拟人操作浏览器的行为,替我们自动下单。大家想一下,代码执行的速度是非常快的,肯定比人用鼠标点击网页的按钮快得多。所以,我们就可以利用程序帮我们抢购商品。
以下为程序的执行流程图
提交了订单以后,我们只要在规定时间以内支付即可。
以下为演示效果:
只需要输入抢购的时间和商品的链接即可,剩下的就不用我们自己操作啦,当然这里没有实现自动登录的功能,需要扫码登录,自动登录也比较简单。
其实,商品抢购挺简单的(简单的前提是分析问题),请大家不要将该脚本用于任何商业用途,脚本仅供学习交流使用。
好了,本期推文就到这里啦。拜拜!如需源码请在公众号后台私聊哦。
关注哥们并肩走过
与你分享我的
生活趣事/好物推荐/旅行见闻/编程思考