天猫商城自动化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岁了,有一份不错的工作,但又不甘心止步于此,想要通过提升学历升职加薪,但又纠结自己是否能静下心来学习、是否能顺利毕业、拿到的证书…...
2.13作业【设备树解析,按自己理解】
设备树定义 设备树(device tree是描述硬件信息的一种树形结构,设备书文件在linux内核启动后被内核解析。描述一个硬件设备信息的节点我们叫做设备节点,一个设备节点内部包含当前硬件的多个不同属性,相同节点不同属性是以链式结构存…...
《NFL星计划》:巴尔的摩乌鸦·橄榄1号位
巴尔的摩乌鸦(英语:Baltimore Ravens)是一支职业美式橄榄球球队位于马里兰州的巴尔的摩。他们现时为美国美式橄榄球联合会的北区进行比赛,其主场为M&T银行体育场。乌鸦队曾在2000年和2012年取得超级碗冠军。 巴尔的摩乌鸦 成…...
Allegro如何设置自动保存和自动保存的时间操作指导
Allegro如何设置自动保存和自动保存的时间操作指导 做PCB设计的时候,自动保存软件是一个必要的功能,Allegro同样支持设置自动保存,而且可以设置自动保存的时间。 如下图 具体操作如下 点击Setup点击User Preferences...
Kotlin实现简单音乐播放器
关于音乐播放器,我真的是接触比较多,听歌作为我第一大爱好,之前也用Java设计过音乐播放器,感兴趣的同学可以阅读:Android Studio如何实现音乐播放器(简单易上手)和 Android Studio实现音乐播放器…...
ShardingSphere-Proxy 数据库协议交互解读
数据库协议对于大部分开发者来说算是比较冷门的知识,一般的用户、开发者都是通过现成的数据库客户端、驱动使用数据库,不会直接操作数据库协议。不过,对数据库协议的特点与流程有一些基本的了解,有助于开发者在排查数据库功能、性…...
基于ubuntu20.4的wine的MDK5软件的安装
本文基于ubuntu20.4安装MDK5的keil软件,由于MDK不提供linux版本的安装软件,因此需要利用wine软件来安装MDK5软件,具体流程包括wine软件安装、MDK5安装及MDK5的lic添加等3部分内容。具体流程如下所示: (一)…...
Jmeter之直连数据库框架搭建简介
案例简介 通过直连数据库让程序代替接口访问数据库,如果二者预期结果不一致,就找到了程序的缺陷。 下面通过一个案例分析讲解如何实现:获取某个字段值,放在百度上搜索。 实现方式 1、Jmeter本身不具备直连数据库的功能…...
备战蓝桥杯【高精度乘法和高精度除法】
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...
火眼审阅 | 基于NLP和OCR识别技术赋能合同审阅
合同作为确定权利义务的法律文件,贯穿企业内外部活动的所有环节,可见合同数据之于企业是非常重要的数据资产。 合同管理是企业营业中的重要部分,其中合同审核是企业法务的基本工作之一。而对于所有的法务人员一直存在一个问题:合…...
关于在集合中对象比较属性值的问题
关于在集合中对象比较属性值的问题1 问题说明2 问题排查3 总结及伪代码楼主在最近遇到一个场景,项目中有一个校验。 需要将数据库查询的集合对象与前端传递的集合对象进行比较,看数据是否被修改。 1 问题说明 基于上面项目需求,项目为较老的…...
山西利用模板建站/南宁关键词优化服务
组件:两帧图片互相切换的动画。 实现如下效果: 1.缓存动画对象 2.加载两帧图片 local MenuScene class("MenuScene", function()return display.newScene("MenuScene") end)function MenuScene:ctor()local animate cc.Animation:…...
1g内存跑wordpress/引流人脉推广软件
把一切失望和沮丧都抛弃,成功之路就在你的脚下。...
交互效果好的网站/网络营销软件大全
上一章讲了网络,那么这一章讲讲Dockerfile,那么什么是dockerfile呢? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 1.dockerfile参数详解【文末免费分享自动…...
响应式网站建设多少钱/网络广告案例以及分析
linux系统中,nl命令用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等的功能。 1.命令格式࿱…...
淄博网站制作公司/免费外网加速器
数据挖掘是指以某种方式分析数据源,从中发现一些潜在的有用的信息,所以数据挖掘又称作知识发现,而关联规则挖掘则是数据挖掘中的一个很重要的课题,顾名思义,它是从数据背后发现事物之间可能存在的关联或者联系。举个最…...
wordpress指定文章p=/谷歌账号注册
1.优先使用异步消息。 上文已经说过,使用异步消息 Consumer 端需要实现幂等。幂等有两种方式,一种方式是业务逻辑保证幂等。比如接到支付成功的消息订单状态变成支付完成,如果当前状态是支付完成,则再收到一个支付成功的消息则说明…...