注意:示例代码仅供学习使用,禁止不正当盈利。
本文使用Python的selenium库通过Chrome浏览器来抢购商品。首先需要准备好Python3开发环境,本文使用的版本是Python3.6,编辑器使用的是PyCharm,浏览器使用Chrome。使用教程详见下文。
使用pip安装selenium库,命令如下:
pip install selenium
在PyCharm中可以点击Terminal
输入pip命令,如下图:
查看Chrome版本
首先需要查看Chrome浏览器的版本,再下载对应版本的ChromeDriver,查看Chrome版本的方法如下:打开Chrome,点击设置
,找到关于Chrome
,右侧即可查看Chrome版本,如下图:
下载对应版本的ChromeDriver
ChromeDriver下载地址:链接
首先需要连接国际网络,打开ChromeDriver下载页面,找到对应的版本,复制win64平台(若Chrome浏览器为32位,则选择win32平台)的URL,输入到浏览器中进行下载,如下图:
配置ChromeDriver
要使用ChromeDriver,还需将其添加至系统环境变量。方法如下,将下载好的压缩包解压,将其中的chromedriver.exe
文件复制到Python环境目录的Script
文件夹中,若使用的是虚拟环境,则要复制到Python虚拟环境中的Script
文件夹中,如下图:
若Script文件夹不在系统环境变量中,则需要将其添加至系统环境变量,如下图:
也可将chromedriver.exe
保存在其它文件夹,并将此文件夹添加至系统环境变量。
首先需要导入selenium库:
from selenium import webdriver
from selenium.webdriver.common.by import By
还需要导入一些与时间相关的库:
import time
import datetime
打开Chrome浏览器:
browser = webdriver.Chrome()
打开网页:
# 打开网页
browser.get("https://www.xxxxxx.com")
# 打开淘宝网页
browser.get("https://www.taobao.com")
定位元素:
# find_element(By.LINK_TEXT, "text") 同 find_element_by_link_text("text")
# 其它定位函数同理
# 通过ID定位
browser.find_element(By.ID, "id")
# or
browser.find_element_by_id("id")
# 通过链接文本定位
browser.find_element(By.LINK_TEXT, "text")
# or
browser.find_element_by_link_text("text")
# 通过xpath定位,适用于元素按钮
browser.find_element_by_xpath('//span[contains(text(),"立即下单")]') # 根据文本定位
browser.find_element_by_xpath('//span[@id="id"]') # 根据属性
点击元素:
browser.find_element(By.LINK_TEXT, "text").click()
更多使用方法请参考selenium官方文档:链接。
此处代码仅供学习使用,禁止不正当盈利。
代码说明及用法可参考注释,此处不再进行说明。
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import datetime
# 抢购时间
times = "2023-08-20 10:20:00.000000"
# 打开谷歌浏览器
browser = webdriver.Chrome()
time.sleep(1)
browser.get("https://www.taobao.com")
time.sleep(1)
# 扫码登录,可在淘宝APP处扫码登录
# find_element(By.LINK_TEXT, "value") 同 find_element_by_link_text("value")
browser.find_element(By.LINK_TEXT, "亲,请登录").click()
print("请扫码")
time.sleep(10)
browser.get("https://cart.taobao.com/cart.htm")
print("已进入购物车")
time.sleep(5)
while 1:
# 勾选所有商品
if browser.find_element(By.ID, "J_SelectAll1"):
browser.find_element(By.ID, "J_SelectAll1").click()
break
while 1:
n = 0 # 抢购次数
isSuccess = 0 # 是否成功
nowTime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")
if nowTime >= times:
print("开始抢购:", nowTime)
while 1:
try:
if browser.find_element(By.LINK_TEXT, "结 算"):
browser.find_element(By.LINK_TEXT, "结 算").click()
print("已帮您抢到该商品")
break
except:
pass
finally:
n += 1
print("抢购次数:", n)
time.sleep(0.01)
# 点击提交订单按钮
print("开始提交订单")
while 1:
try:
if browser.find_element_by_link_text('提交订单'):
browser.find_element_by_link_text('提交订单').click()
isSuccess = 1
print("抢购成功,请尽快付款")
break
except:
pass
time.sleep(0.01)
if isSuccess:
break
else:
print("未开始:", nowTime)
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import datetime
# 抢购时间
times = "2023-08-20 10:20:00.000000"
# 打开谷歌浏览器
browser = webdriver.Chrome()
time.sleep(1)
# 华为商场首页
# browser.get("https://www.vmall.com/index.html")
# 商品页
browser.get("https://www.vmall.com/product/xxxxxx.html")
time.sleep(5)
# 扫码登录,可在华为手机设置中的华为账号处扫码登录
# find_element(By.LINK_TEXT, "value") 同 find_element_by_link_text("value")
browser.find_element(By.LINK_TEXT, "立即登录").click() # 预定商品
# browser.find_element(By.LINK_TEXT, "请登录").click() # 普通商品
print("请扫码")
time.sleep(20)
'''
browser.get("https://cart.taobao.com/cart.htm")
print("已进入购物车")
time.sleep(5)
while 1:
if browser.find_element(By.ID, "J_SelectAll1"):
browser.find_element(By.ID, "J_SelectAll1").click()
break
'''
while 1:
n = 0 # 抢购次数
isSuccess = 0 # 是否成功
nowTime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")
if nowTime >= times:
print("开始抢购:", nowTime)
while 1:
try:
# 普通商品
# if browser.find_element(By.LINK_TEXT,"立即下单"):
# browser.find_element(By.LINK_TEXT,"立即下单").click()
# print("已帮您抢到该商品")
# break
# 预定商品
if browser.find_element_by_xpath('//span[contains(text(),"立即下单")]'):
browser.find_element_by_xpath('//span[contains(text(),"立即下单")]').click()
print("已帮您抢到该商品")
break
except:
pass
finally:
n += 1
print("抢购次数:", n)
time.sleep(0.01)
# 点击提交订单按钮
print("开始提交订单")
while 1:
try:
if browser.find_element_by_link_text("提交订单"):
browser.find_element_by_link_text("提交订单").click()
isSuccess = 1
print("提交订单成功,请尽快付款")
break
except:
pass
time.sleep(0.01)
if isSuccess:
break
else:
print("未开始:", nowTime)