前言
无意在论坛刷到了基于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')
if all :
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咯,下载地址:
https://sites.google.com/a/chromium.org/chromedriver/home
因为我是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试一下
package com;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @author BeamStark
* @date 2022-10-08-08:58
*/
public class TEST {
public static void main(String[] args) {
ChromeDriver chromeDriver = new ChromeDriver();
chromeDriver.get("https://www.baidu.com");
chromeDriver.findElementById("kw").sendKeys("啦啦啦");
chromeDriver.findElementById("su").click();
}
}
点击运行
bingo~
但是这个时候控制台会报错(无伤大雅)
说的好像是不安全之类的,只能本地运行,mac的权限始终没有搞明白 :(
第四步 用代码帮我们买东西
package com;
import lombok.extern.slf4j.Slf4j;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* 用Java实现淘宝秒杀自动化
* @author BeamStark
* @date 2022-10-08-08:58
*/
@Slf4j
public class WhereIsMyMoney {
private static String ShoppingTime = "2022-10-09 04:02:00";
public static void main(String[] args) throws InterruptedException {
log.info("开始时间:" + LocalDateTime.now());
// 初始化驱动
ChromeDriver chromeDriver = new ChromeDriver();
// 初始化等待时间
WebDriverWait wait15s = new WebDriverWait(chromeDriver,15000);
WebDriverWait wait1s = new WebDriverWait(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://www.toymoban.com/news/detail-410000.html
参考文章:https://blog.csdn.net/chenjxj123/article/details/121802904文章来源地址https://www.toymoban.com/news/detail-410000.html
到了这里,关于使用Java基于selenium实现淘宝秒杀自动化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!