使用Python抢购商品

使用Python抢购商品

  • 前言
  • 准备工作
    • 安装selenium库
    • 下载ChromeDriver
  • 编写抢购商品py脚本
    • 导入库
    • selenium使用方法
  • 示例代码
    • 淘宝网
    • 华为商城

前言

注意:示例代码仅供学习使用,禁止不正当盈利。

本文使用Python的selenium库通过Chrome浏览器来抢购商品。首先需要准备好Python3开发环境,本文使用的版本是Python3.6,编辑器使用的是PyCharm,浏览器使用Chrome。使用教程详见下文。

准备工作

安装selenium库

使用pip安装selenium库,命令如下:

pip install selenium

在PyCharm中可以点击Terminal输入pip命令,如下图:
使用Python抢购商品_第1张图片

下载ChromeDriver

查看Chrome版本
首先需要查看Chrome浏览器的版本,再下载对应版本的ChromeDriver,查看Chrome版本的方法如下:打开Chrome,点击设置,找到关于Chrome,右侧即可查看Chrome版本,如下图:
使用Python抢购商品_第2张图片

下载对应版本的ChromeDriver

ChromeDriver下载地址:链接

首先需要连接国际网络,打开ChromeDriver下载页面,找到对应的版本,复制win64平台(若Chrome浏览器为32位,则选择win32平台)的URL,输入到浏览器中进行下载,如下图:
使用Python抢购商品_第3张图片

配置ChromeDriver
要使用ChromeDriver,还需将其添加至系统环境变量。方法如下,将下载好的压缩包解压,将其中的chromedriver.exe文件复制到Python环境目录的Script文件夹中,若使用的是虚拟环境,则要复制到Python虚拟环境中的Script文件夹中,如下图:
使用Python抢购商品_第4张图片

若Script文件夹不在系统环境变量中,则需要将其添加至系统环境变量,如下图:
使用Python抢购商品_第5张图片
使用Python抢购商品_第6张图片

也可将chromedriver.exe保存在其它文件夹,并将此文件夹添加至系统环境变量。

编写抢购商品py脚本

导入库

首先需要导入selenium库:

from selenium import webdriver
from selenium.webdriver.common.by import By

还需要导入一些与时间相关的库:

import time
import datetime

selenium使用方法

打开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)

你可能感兴趣的:(#,Python,Skill,Python,selenium,抢购商品)