有一个每年双十一就要剁一只手的姐妹是种什么体验?在没有学会Python的时候,就是让我给她各种抢券,现在学会一点Python,就让我给她写个抢购脚本,哎!有什么办法呢,是自己的惯的那也只能宠着了。



富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_计算机



富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_爬虫_02


经过我不懈努力的研究,实验最终完成啦!欢迎各位大佬给我看看能不能在优化一下,欢迎指出我的不足。

进入正文。。。

咱们的爬取目标

网站:​​淘宝​

富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_脚本_03

工具使用

开发工具:pycharm

开发环境:python3.7, Windows10

使用工具包:selenuim

需求分析

我们的目标是秒杀淘宝的订单,这里面有几个关键点,首先需要登录淘宝,其次你需要准备好订单,最后要在指定时间快速提交订单。

项目思路解析

selenium安装配置

selenium是Python自动化测试的工具库,需要配置一些环境驱动

selenium安装

pip install selenium


Selenium安装好之后,并不能直接使用,它需要与浏览器进行对接。这里拿Chrome浏览器为例。若想使用Selenium成功调用Chrome浏览器完成相应的操作,需要通过ChromeDriver来驱动。

链接:

https://chromedriver.storage.googleapis.com/index.html

根据自身的chorme版本选择安装的驱动版本

富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_计算机_04

富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_python_05

下载完成之后,解压,将其放置在Python安装路径下python文件夹中即可

富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_计算机_06

项目解析

尝试通过selenium打开淘宝首页,检验是否安装成功

from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.taobao.com")


通过xpath定位选取到登录标签,抢购脚本需要先知道你购买的东西是什么

富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_python_07

登录的方式课自行选择(可账户密码登录,也可扫码登录,辣条在这里用的扫码登录)

登录成功后点击购物车,选取你需要的商品数据(可全选,可自己手动勾选)

富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_爬虫_08

在点击结算按钮

富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_爬虫_09

设定一个结算时间,你需要下单的时间

富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_python_10

等待时间的到来 点击提交订单按钮

富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了_编程语言_11

简易源码分享

from selenium import webdriver
import datetime
import time


driver = webdriver.Chrome()
driver.maximize_window()


def login():
# 打开淘宝登录页,并进行扫码登录
driver.get("https://www.taobao.com")
time.sleep(3)
if driver.find_element_by_link_text("亲,请登录"):
driver.find_element_by_link_text("亲,请登录").click()

print("请在30秒内完成扫码")
time.sleep(30)

driver.get("https://cart.taobao.com/cart.htm")
time.sleep(3)
# 点击购物车里全选按钮
if driver.find_element_by_id("J_SelectAll1"):
driver.find_element_by_id("J_SelectAll1").click()
now = datetime.datetime.now()
print('login success:', now.strftime('%Y-%m-%d %H:%M:%S:%f'))


def buy(buytime):
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
print("当前时间" + now)
# 对比时间,时间到的话就点击结算
if now > buytime:
try:
# 点击结算按钮
if driver.find_element_by_id("J_Go"):
driver.find_element_by_id("J_Go").click()
driver.find_element_by_link_text('提交订单').click()
except:
time.sleep(0.1)
print(now)
time.sleep(0.1)

if __name__ == "__main__":
# times = input("请输入抢购时间:")
# 时间格式:"2018-09-06 11:20:00.000000"
login()
buy("2021-08-24 14:30:00.000000")


我是白又白i,一名喜欢分享知识的程序媛❤️
感兴趣的可以关注我的公众号:白又白学Python【非常感谢你的点赞、收藏、关注、评论,一键三连支持】