天猫商城自动化python脚本(仅供初学者学习使用)
作者:Eason_LYC
悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。
一个人的价值,在于他所拥有的。可以不学无术,但不能一无所有!
技术领域:WEB安全、网络攻防
关注WEB安全、网络攻防。我的专栏文章知识点全面细致,逻辑清晰、结合实战,让你在学习路上事半功倍,少走弯路!
个人社区:极乐世界-技术至上
追求技术至上,这是我们理想中的极乐世界~(关注我即可加入社区)
背景
写这篇文章的目的仅是为了方便给初学者介绍一下如何上手写一些好玩的脚本,能更快的学以致用。
从前年开始,天猫和京东就推出各类抢购活动,最有代表性的就是53°飞天茅台的抢购,那个抢到后真金白银能赚到钱。只是现在再也不是一个脚本就能搞定的了,已经升级成为服务器加网络的专业团队才能玩的抢购了。

本文介绍的脚本仅是实现淘宝从购物车自动全选、结算、下单直到付款的自动化脚本工具,是一个非常初级简单的脚本。抢到这个茅台不太可能,但是一般的商品自动化没问题。但是对于初学者能非常好的get到思路,并能直接看到效果。
天猫超市业务逻辑
写任何脚本之前,都要通过正常的访问,明确基本的业务逻辑。本文关注天猫商城的购买流程,那天猫商城购买流程有哪些呢?
本脚本实现上市步骤2、3、4的自动化操作
此类python脚本基础知识
一定要会的两个python第三方库,分别是第三方库selenium和python内置库requests
python selenium 基本使用方式
Python Selenium 是一种用于自动化测试 Web 应用程序的工具,它使用 Python 编写的脚本来控制 Web 浏览器进行操作。
基本使用方式如下:
-
安装 Selenium:可以通过 pip 安装,在终端输入命令 “pip install selenium” 即可。
-
下载 WebDriver:Selenium 需要与浏览器配合使用,所以你需要下载与使用的浏览器相对应的 WebDriver。
-
导入 Selenium:在 Python 代码中导入 selenium 库。
-
创建 WebDriver 对象:使用以下代码创建 WebDriver 对象:
from selenium import webdriverdriver = webdriver.Firefox()
- 操作浏览器:使用 WebDriver 的方法操作浏览器,如打开网页、填写表单、点击按钮等。
# 举例
driver.get("https://www.google.com")search_box = driver.find_element_by_name("q")
search_box.send_keys("Selenium")
search_box.submit()
- 关闭浏览器:使用以下代码关闭浏览器:
driver.quit()
官方文档
python3 内置库requests
Python3 内置的 requests 库是一个非常流行的 HTTP 客户端库,提供了简洁易用的 API,帮助你快速发送 HTTP 请求。
- 发送 GET 请求:
import requestsurl = 'https://www.example.com/api/get_data'
response = requests.get(url)if response.status_code == 200:data = response.json()# do something with data
else:print('Failed to fetch data')
- 发送带有参数的 GET 请求:
import requestsurl = 'https://www.example.com/api/search'
params = {'query': 'python', 'page': 1}
response = requests.get(url, params=params)if response.status_code == 200:data = response.json()# do something with data
else:print('Failed to search data')
- 发送 POST 请求
import requestsurl = 'https://www.example.com/api/create_user'
data = {'username': 'example_user', 'email': 'example_user@example.com'}
response = requests.post(url, data=data)if response.status_code == 201:result = response.json()# do something with result
else:print('Failed to create user')
这些仅仅是 requests 库的基本用法,它还有许多其他功能,例如发送带有请求头、cookie、文件等的请求,更多用法请参考官方文档:http://docs.python-requests.org/en/latest/
使用Selenium实现自动化抢购茅台
完整脚本如下:
import datetime
from time import sleep
from selenium import webdriverflag = False
# 秒杀时间 浏览器时间
times = '2023-02-12 20:00:00'
print("*"*48)
print("【重要】此脚本仅用于演示学习使用,不得用于任何实际环境或支付环节!!!")
print("【重要】程序会自动在目标时间,打开购物车点击结算,最终至付款界面,需手动完成付款!!!")
print("【tips】请提前设置默认邮寄地址,准备好手机扫码登陆。建议提前40s运行程序。")
print("目标时间:",times)
print("*"*48)
browser = webdriver.Chrome()
browser.get('https://login.taobao.com/')
sleep(2)
browser.find_element_by_xpath("/html/body/div/div[2]/div[3]/div/div/div/div[1]/i").click()
print(f"请在10s内完成扫码登陆")
sleep(16)
browser.get("https://cart.taobao.com/cart.htm?spm=a21bo.jianhua.1997525049.1.5af911d9v3sXxZ&from=mini&pm_id=1501036000a02c5c3739")
sleep(4)
# 购物车全选
while 1==1:if browser.find_element_by_id("J_SelectAll1"):browser.find_element_by_id("J_SelectAll1").click()breakprint("waiting for time...")
while True:# 获取电脑现在的时间now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')# 对比时间,时间到的话就点击立即购买if now >= times:print(now)try:if browser.find_element_by_link_text("结 算"):browser.find_element_by_link_text("结 算").click()print("1.已成功点击结算")flag = Truebreakexcept:passif flag==True:count = 0while True:try:if browser.find_element_by_link_text("提交订单"):browser.find_element_by_link_text("提交订单").click()print("1.已成功点击结算")flag = Trueprint("2.已下单成功,进入付款界面,请尽快手动完成付款")done_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')print("下单时间:", done_time)breakexcept:count +=1print("未成功进入付款界面,再次尝试! 已尝试",count)if count == 600:breakpass
tips: 脚本使用前请先设置脚本运行时间,就是times = 设置的时间(不得早于实际时间,否则脚本运行无效)
这是一个抢购脚本,它使用了 Selenium 模拟用户操作,抢购商品。
-
datetime 模块是 python 自带的时间模块,用于获取当前时间,对比目标时间。
-
sleep 函数来自 time 模块,可以暂停代码执行一段时间,用于让程序等待模拟人类操作的时间。
-
webdriver 是 Selenium 的核心模块,提供了操作浏览器的 API,包括打开浏览器,点击,查找元素等等。
-
browser.get 函数用于打开一个 URL。
-
browser.find_element_by_xpath 用于在页面中查找元素,通过元素的 xpath 定位。
-
browser.find_element_by_id 用于在页面中查找元素,通过元素的 id 定位。
-
browser.find_element_by_link_text 用于在页面中查找元素,通过元素的文字内容定位。
-
browser.click 用于模拟鼠标点击元素。
-
此脚本中,还有多个 while 循环,用于检查元素是否存在,如果不存在,则继续循环。
-
此脚本仅用于学习和演示目的,不得用于任何实际环境或支付环节!
以下是代码的详细解释
使用 python3 和 selenium 库编写的爬虫脚本,主要目的是实现抢购商品的自动化操作。代码的主要流程如下:导入所需的库:
import datetime:用于处理时间的库。
from time import sleep:sleep函数用于延时,方便登陆等操作。
from selenium import webdriver:selenium库是一个自动化测试框架,此代码中使用到了它的 webdriver 模块。
设置变量和程序提示信息:
flag 变量用于标识抢购是否成功。
times 变量是秒杀的时间,此处是一个字符串,格式为“YYYY-MM-DD HH:MM:SS”。
程序提示信息:通过 print() 函数,在控制台输出一些程序的使用说明和目标时间,以方便使用者了解程序的作用。
浏览器的自动化操作:
browser = webdriver.Chrome():打开 Chrome 浏览器。
browser.get('https://login.taobao.com/'):打开淘宝登陆页面。
sleep(2):等待2秒,方便用户完成登陆操作。
browser.find_element_by_xpath("/html/body/div/div[2]/div[3]/div/div/div/div[1]/i").click():通过 xpath 定位元素并点击,完成扫码登陆操作。
sleep(16):等待16秒,以等待登陆成
以上仅是用一种方式写了一个非常简单的脚本,大家可以按差不多的思路使用requests库,改写这个脚本哦~
相关文章:
天猫商城自动化python脚本(仅供初学者学习使用)
作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,在于他所拥有的。可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。我的…...
代码随想录第十一天(459)
文章目录459. 重复的子字符串答案思路暴力破解移动匹配459. 重复的子字符串 也不知道为啥这个提示简单题…… 答案思路 暴力破解 例如:abcabc 移位一次:cabcab 移位两次:bcabca 移位三次:abcabc 现在字符串和原字符串匹配了…...
线程及线程池学习
1 线程和进程的区别?进程:进程指正在运行的程序。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。同一个进程中的多个线程之间可以并发的执行。2 创建线程有哪几种方式…...
SpringBoot整合(四)整合Ehcache、Redis、Memcached、jetcache、j2cache缓存
企业级应用主要作用是信息处理,当需要读取数据时,由于受限于数据库的访问效率,导致整体系统性能偏低。 为了改善上述现象,开发者通常会在应用程序与数据库之间建立一种临时的数据存储机制,该区域中的数据在内存…...
想要的古风女生头像让你快速get
如今我看到很多人都喜欢用古风女生当作头像,那么今天我就来教大家如何快速得到一张超美的古风女生头像~ 上图就是我使用 APISpace 的 AI作画(图像生成)服务 快速生成的古风女生头像,不仅可以限定颜色,还可以选择『宝石镶嵌』或『花卉造型』这…...
传统企业数字化转型,到底难在哪里?
数字化转型过程中面临最大的挑战和问题是什么?这篇整理了企业在数字化转型过程中普遍面临的9大问题和挑战以及如何解决这些问题,希望能够对各位企业数字化转型有多启发和帮助。 01 企业数字化转型三大现状 在梳理企业数字化转型问题之前,我想…...
Python:青蛙跳杯子(BFS)
题目描述 X 星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。 X 星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个…...
6.10 谱分解
文章目录计算方法代码实现计算方法 单纯矩阵normal matrix指的是符号ATAAATA^TAAA^TATAAAT的矩阵,他们的特征值互异。此外,单纯矩阵还有个特点,他们的特征空间彼此正交。 对于单纯矩阵,存在以下的谱定理Spectral theorem&…...
MySQL入门篇-MySQL 行转列小结
备注:测试数据库版本为MySQL 8.0 需求:求emp表各个岗位的工资之和,如无,用0代替 如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本 CASE语法 SELECT deptno,ifnull(sum(case when job MANAGER then sal else 0 …...
项目管理常见的十大难题及其症状
01缺少维护文档时常,项目工作紧张时,第一个去掉的就是文档工作。有时即使项目有时间,也不会创建文档;或是创建了文档,却很少在项目进行过程中维护它。症状产品与需求文档不符;技术文档过时,无法保证技术的延…...
技术方案模板
0.基本原则 1.可量化,很大、很多、很高 到底是多少?基本没影响,到底有没有影响什么情况下有影响? 2.可实施,结合实际情况最终可落地 3.可指导,非方案制定人能理解,能在尽量少的人工沟通的情况下实现方案 4.可复用,设计的方案,再次出现类似需求时可以做到少开发或不…...
MySQL中对于单表和多表的操作
一、单表查询素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等显示所有职工的基本信息。mysql8.0 [chap03]>select * from worker;查询所有职工所属部门的部门号,不显示重复的部门号。mysql8.0 [cha…...
MFI认证
一、什么是MFI认证? 苹果MFI认证,是苹果公司(Apple Inc.)对其授权配件厂商生产的外置配件的一种使用许可,MFi认证是apple公司Made for iPhone/iPad/iPod的英文缩写。是指分别为连接iPhone/iPad/iPod而特别设计的电子配件。 [图片] 二、iOS外设连接的几种方式 [图片] 这…...
Vue中mixins的使用
文章目录mixins介绍mixins特点mixins介绍 Mixins:在引入组件之后与组件中的对象和方法进行合并,相当于扩展了父组件的对象与方法,可以理解为形成了一个新的组件。混入 (mixins):是一种分发 Vue 组件中可复用功能的非常灵活的方式…...
【PyQt】PyQt学习(一)框架介绍+环境搭建
简介 写在最前面的话 在决定学习、使用一个框架之前需要考量如下几点: 框架运行效果;框架应用范围;框架学习成本和迁移成本;实现自己所需功能的开发效率; 只有综合考量如上四个方面,才能更好地选择适合…...
浅谈前端设计模式:策略模式和状态模式的异同点
一、策略模式 策略模式是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 而且策略模式是重构小能力,特别适合拆分“胖逻辑”。 这个定义乍一看会有点懵,不过通过下面的例子就能慢慢理解它的意思。 先来看一个真实场景 某次活动要做…...
线性杂双功能PEG试剂OPSS-PEG-Acid,OPSS-PEG-COOH,巯基吡啶聚乙二醇羧基
英文名称:OPSS-PEG-COOH,OPSS-PEG-Acid 中文名称:巯基吡啶-聚乙二醇-羧基 OPSS-PEG-COOH是一种具有OPSS和羧基的线性杂双功能PEG试剂。它是一种有用的带有PEG间隔基的交联剂。OPSS代表正吡啶基二硫化物或邻吡啶基二硫代,与硫醇、…...
开发微服务电商项目演示(四)
一,网关服务限流熔断降级第1步:启动sentinel-dashboard控制台和Nacos注册中心服务第2步:在网关服务中引入sentinel依赖<!-- sentinel --> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>sprin…...
【C语言学习笔记】:静态库
一、什么是库 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是一种可执行代码的二进制形式,可以被操作…...
社科院与杜兰大学中外合作办学金融管理硕士——30+的年龄在职读研有必要吗?
说起读研,年龄在什么区间最合适呢?上次有位咨询的同学反馈年龄已经快35岁了,有一份不错的工作,但又不甘心止步于此,想要通过提升学历升职加薪,但又纠结自己是否能静下心来学习、是否能顺利毕业、拿到的证书…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
