前言
无意在论坛刷到了基于Python实现淘宝秒杀的小demo,觉得挺有意思的,就用Python写了一下
# 淘宝清空购物车装置import time
# 新版的selenium和老版的有区别,坑死我了from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
ShoppingTime ="19:00"# 先登录
driver.get("https://login.taobao.com/member/login.jhtml?f=top&redirectURL=http%3A%2F%2Fwww.taobao.com%2F/")
time.sleep(15)# 进入购物车
driver.get("https://cart.taobao.com/cart.htm?from=mini&ad_id=&am_id=&cm_id=&pm_id=1501036000a02c5c3739")
time.sleep(2)# 选中全选all= driver.find_element(By.XPATH,'/html/body/div[1]/div[3]/div/div/div[2]/div[1]/div/div[''1]/div/div/label')ifall:all.click()
time.sleep(1)
buy = driver.find_element(By.XPATH,'/html/body/div[1]/div[3]/div/div/div[4]/div[2]/div[3]/div[5]/a')
后来写时间判断的时候发现时间格式要转来转去的,Python是真的不熟,想到openqa好像也有selenium,就试一下用Java去写,简单搜了一下用Java写这个的真不多,自己折腾一下咯,不过涉及到爬虫还是推荐用Python去当主语言写,库多教程也多,少走弯路。
第一步 安装ChromeDriver
默认大家都用Chrome咯,下载地址:
因为我是mac环境,下好chromedriver之后直接拷贝在/usr/local/bin下就行啦
拷贝的时候注意需要管理员权限,按个指纹就完了
也可以放在其他位置,写Java的时候用代码配一下就行
System.setProperty("webdriver.chrome.driver","/Users/beamstark/Desktop/chromedriver");
第二步 导包
默认大家都用Maven
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.14.0</version></dependency><!-- https://mvnrepository.com/artifact/com.google.guava/guava --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.0-jre</version></dependency>
第三步 测试
还是Java顺手,简单写个demo试一下
packagecom;importorg.openqa.selenium.chrome.ChromeDriver;/**
* @author BeamStark
* @date 2022-10-08-08:58
*/publicclass TEST {publicstaticvoidmain(String[] args){ChromeDriver chromeDriver =newChromeDriver();
chromeDriver.get("https://www.baidu.com");
chromeDriver.findElementById("kw").sendKeys("啦啦啦");
chromeDriver.findElementById("su").click();}}
点击运行
bingo~
但是这个时候控制台会报错(无伤大雅)
说的好像是不安全之类的,只能本地运行,mac的权限始终没有搞明白 :(
第四步 用代码帮我们买东西
packagecom;importlombok.extern.slf4j.Slf4j;importorg.openqa.selenium.By;importorg.openqa.selenium.chrome.ChromeDriver;importorg.openqa.selenium.support.ui.ExpectedConditions;importorg.openqa.selenium.support.ui.WebDriverWait;importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;/**
* 用Java实现淘宝秒杀自动化
* @author BeamStark
* @date 2022-10-08-08:58
*/@Slf4jpublicclassWhereIsMyMoney{privatestaticStringShoppingTime="2022-10-09 04:02:00";publicstaticvoidmain(String[] args)throwsInterruptedException{
log.info("开始时间:"+LocalDateTime.now());// 初始化驱动ChromeDriver chromeDriver =newChromeDriver();// 初始化等待时间WebDriverWait wait15s =newWebDriverWait(chromeDriver,15000);WebDriverWait wait1s =newWebDriverWait(chromeDriver,1000);// 先登录
chromeDriver.get("https://login.taobao.com/member/login"+".jhtml?f=top&redirectURL=http%3A%2F%2Fwww.taobao.com%2F/");
chromeDriver.findElementByXPath("/html/body/div/div[2]/div[3]/div/div/div/div[1]/i").click();
log.info("等待登录");// 进入购物车
wait15s.until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/div[1]/div[1"+"]/div/ul[2]/li[3]/div[1]/a/span[2]"))).click();// 选中购物车的第一个
wait1s.until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/div[1]/div[3]/div/div/div[2]/div[2]/div[1"+"]/div/div[1]/div/div/label"))).click();
log.info("选中,等待下单");Thread.sleep(500);// 等待下单while(true){if(LocalDateTime.now().isAfter(LocalDateTime.parse(ShoppingTime,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))){// 结算!
chromeDriver.findElementByClassName("submit-btn").click();
log.info("结算");// 锁单
wait1s.until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/div[1"+"]/div[3]/div/div[1]/div[1]/div/div[9]/div/div/a[2]"))).click();
log.info("锁单");System.out.println("下单成功,去支付吧! 完成时间:"+LocalDateTime.now());break;}}// 5秒后关闭Thread.sleep(5000);
chromeDriver.quit();}}
三次连续测试通过
测试用时平均值0.8s左右(与网速和页面响应速度有关,以Chrome内核为准,没测过其他浏览器内核),反正比手动快多了就是了而且也不费心,该打游戏打游戏该刷剧刷剧,就挂着呗~
写在后面
感谢大家看到这里:》
此程序没有设置给你付款的代码,只会帮你锁单(给你留有后悔的余地),请大家合理消费
~洗洗睡啦 : )
参考文章:https://blog.csdn.net/chenjxj123/article/details/121802904
版权归原作者 BeamStark 所有, 如有侵权,请联系我们删除。