python selenium 模拟浏览器自动操作抢购脚本

这篇具有很好参考价值的文章主要介绍了python selenium 模拟浏览器自动操作抢购脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

每逢秒杀,都在遗憾网速和手速慢没能抢购到商品吧。

手写一个脚本,让程序帮你抢,抢到的概率会大大提升。

废话不多说,直接上代码。

本实例以华为官网抢购手机为例文章来源地址https://www.toymoban.com/news/detail-705490.html

"""
模拟浏览器操作华为官网

(1) 【只需要安装一种driver即可】 
one: 安装 chromedriver 
a. 去官网 (http://chromedriver.storage.googleapis.com/index.html) 下载对应版本的driver
b. 解压后将exe文件放入本地谷歌浏览器的安装目录 例如: C:\Program Files\Google\Chrome\Application
c. 配置将谷歌安装目录配置到系统环境变量的Path中
two: 安装 edgedriver
a.去官网  (https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) 下载对应版本的driver
b. 解压后将exe文件放入Edge浏览器的安装目录 例如: C:\Program Files (x86)\Microsoft\Edge\Application

(2) 安装python
(3) 安装 selenium 
    指令: pip install selenium
(4) 打开此文件, 修改    账号参数: userName, password 手机抢购页面链接参数: phonePageUrl 抢购时间参数: buyTimeStr
(5) 设置号华为官网的收货地址
"""

from selenium import webdriver
from selenium.webdriver.common import by
import time
import re

 driver = webdriver.Chrome()
# driver = webdriver.Edge()
elementBy = by.By()
# 账号
userName = "134*****38"
password = "l*****6"
# 首页
indexUrl = "https://www.vmall.com/index.html"
# 想要抢购的手机页面
# phonePageUrl = "https://www.vmall.com/product/10086213682650.html#2601010448909"
phonePageUrl = "https://www.vmall.com/product/comdetail/index.html?prdId=10086238622707&sbomCode=2601010388226"
# 提交订单url
submitOrderUrl = "/order/nowConfirmcart"
buyTimeStr = "2023-07-13 20:00:00"

def main():
    # 先登录
    login()
    # 指定时间, 未到时间则阻塞
    curTime = time.time()
    buyTime = time.mktime(time.strptime(buyTimeStr,"%Y-%m-%d %H:%M:%S"))
    while curTime < buyTime : 
        print("当前时间戳:{}, 抢购时间戳:{}".format(curTime,buyTime) , end="\n")
        time.sleep(10)
        curTime = time.time()
    # 抢购
    if re.search("comdetail", phonePageUrl) is not None :
        buyTwo()
    else :
        buy()
    

def login():
    print("登录")
    driver.get(indexUrl)
    time.sleep(5)
    # pc网页
    indexLoginBns = driver.find_elements(elementBy.CLASS_NAME, "r-gy4na3")
    if not indexLoginBns: 
        for bn in indexLoginBns:
            if bn.text == "请登录":
                bn.click()
                break
    else :
        # 移动网页
        indexLoginBns = driver.find_elements(elementBy.CLASS_NAME,"r-1ff274t")
        for bn in indexLoginBns:
            if bn.text == "登录":
                bn.click()
                break

    time.sleep(5)
    loginElements = driver.find_elements(elementBy.CSS_SELECTOR, ".hwid-input-root")
    for e in loginElements:
        inputele = e.find_element(elementBy.TAG_NAME, "input")
        attr = inputele.get_attribute("type")
        if attr == "text":
            inputele.send_keys(userName)
        elif attr == "password":
            inputele.send_keys(password)

    loginBtnElement = driver.find_element(elementBy.CSS_SELECTOR, ".hwid-login-btn")
    loginBtnElement.click()
    #需要手机验证码 
    # 此处手动完成验证码验证 预留一分钟
    time.sleep(60)
    print("登录成功")


"""
华为商品页不统一,此方法为抢购按钮是立即下单的
"""
def buy():
    driver.get(phonePageUrl)
    time.sleep(5)
    print("打开指定手机 --> 准备抢购")
    driver.refresh()
    time.sleep(5)
    buyBtns = driver.find_elements(elementBy.CLASS_NAME, "product-button02")
    cur_url = driver.current_url
    canBuy = False
    if buyBtns is None:
        print("无法获取下单按钮")
        return

    time.sleep(2)
    # 如果没有进入提交订单页面则一直点击立即下单
    buyCountNum = 1
    while not re.search(submitOrderUrl, cur_url) and not canBuy :
        for buybn in buyBtns:
            if buybn.find_element(elementBy.TAG_NAME, "span").text == "立即下单" :
                # 此元素被设置了javascript:; , 所以click()无法触发,只能通过执行execute_script执行网页js方法
                driver.execute_script('ec.product.orderNow(null,null,this)')
                # buybn.click()
                canBuy = True
                print("点击下单按钮次数: {}".format(buyCountNum))
                buyCountNum += buyCountNum
                break

    if canBuy == True :
        # 预留时间选地址
        time.sleep(5)
        submitBtn = driver.find_element(elementBy.CLASS_NAME,"order-submit-btn")
        if submitBtn is None: 
            print("无法提交订单")              
        else :
            print("提交订单")
            # submitBtn.click()
            driver.execute_script("ec.order.submit();")
                    
        # 预留时间等待提交响应结束
        time.sleep(60) 

"""
华为商品页不统一,此方法为抢购按钮是立即购买的
此商品详情每一步都会新开页面
""" 
def buyTwo() :
    driver.get(phonePageUrl)
    time.sleep(5)
    print("打开指定手机 --> 准备抢购")
    driver.refresh()
    time.sleep(5)
    cur_url = driver.current_url
    canBuy = False

    time.sleep(2)
    # 如果没有进入提交订单页面则一直点击立即下单
    buyCountNum = 1

    buyButtonScript = """
        this.document
        .getElementsByClassName("css-901oao r-jwli3a r-1i10wst r-13uqrnb r-16dba41 r-oxtfae r-rjixqe r-6dt33c r-lrvibr")[0]
        .click();
    """

    while not re.search(submitOrderUrl, cur_url) and not canBuy :
        # 通过执行execute_script执行网页js方法
        driver.execute_script(buyButtonScript)
        # 预留反应时间
        time.sleep(2)
        # 切换到最右边的网页窗口
        driver.switch_to.window(driver.window_handles[-1])
        cur_url = driver.current_url
        print("点击下单按钮次数: {}".format(buyCountNum))
        buyCountNum += buyCountNum
        if re.search(submitOrderUrl, cur_url) is not None :
            canBuy = True
            break

    if canBuy == True :
        # 切换到最右边的网页窗口
        driver.switch_to.window(driver.window_handles[-1])
        # 预留时间选地址
        time.sleep(5)
        submitBtn = driver.find_element(elementBy.CLASS_NAME,"order-submit-btn")
        if submitBtn is None: 
            print("无法提交订单")              
        else :
            print("提交订单")
            # submitBtn.click()
            driver.execute_script("ec.order.submit();")

        # 预留时间等待提交响应结束
        time.sleep(60) 
    

# 运行主函数
main()

到了这里,关于python selenium 模拟浏览器自动操作抢购脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium+python自动化测试之使用webdriver操作浏览器的方法

    WebDriver简介 selenium从2.0开始集成了webdriver的API,提供了更简单,更简洁的编程接口。selenium webdriver的目标是提供一个设计良好的面向对象的API,提供了更好的支持进行web-app测试。从这篇博客开始,将学习使用如何使用python调用webdriver框架对浏览器进行一系列的操作 打开浏览

    2024年01月25日
    浏览(66)
  • 一个完整Python实战项目:selenium识别验证码实现自动登录,自动操作浏览器获取某东数据

    最近都没啥时间,很久没更新了。 今天分享一下,如何用selenium识别验证码,实现自动登录以及获取数据。 目标:某东 话不多说直接开始 环境 Python 3.10 Pycharm 模块使用 import random import time from selenium import webdriver import pyautogui import base64 import ddddocr import csv win + R 输入cmd 输入安

    2024年02月04日
    浏览(48)
  • 浏览器常用基本操作之python3+selenium4自动化测试(基础篇)

    1、打开指定的网页地址 我们使用selenium进行自动化测试时,打开浏览器之后,第一步就是让浏览器访问我们指定的地址,可使用get方法实现 1 2 3 from selenium import webdriver driver = webdriver.Edge() driver.get( \\\'https://www.baidu.com/\\\' )   # 本行用于访问指定的地址 2、获取当前页面url 我们在

    2024年02月01日
    浏览(78)
  • selenium-chromedriver如何安装(自动模拟浏览器程序)

    selenium是一种自动模拟浏览器的程序,它可以代替你的手去完成一些反复无聊的点击以及其他动作!很多小伙伴不知道selenium怎么用,这里讲解一下selenium的chromedriver的安装方法: 首先要下载一个谷歌浏览器,我直接把谷歌浏览器的官网给搬过来了:https://www.google.cn/chrome/ 我们

    2024年02月13日
    浏览(58)
  • selenium自动化原理应用 - 利用 requests 模拟 selenium 驱动浏览器

    selenium是一个web自动化测试的开源框架,它支持多语言:python/java/c#… 前面也有一篇文章说明了,selenium+浏览器的环境搭建。 selenium支持多语言,是因为selenium与浏览器驱动之间是通过http协议进行通信的。只关心通信的数据是否能够正确解读 ,并不关心这个数据是从哪个客户

    2024年02月03日
    浏览(54)
  • [爬虫]2.2.1 使用Selenium库模拟浏览器操作

    Selenium是一个非常强大的工具,用于自动化Web浏览器的操作。它可以模拟真实用户的行为,如点击按钮,填写表单,滚动页面等。由于Selenium可以直接与浏览器交互,所以它可以处理那些需要JavaScript运行的动态网页。 首先,我们需要安装Selenium库。你可以使用pip命令来安装:

    2024年02月16日
    浏览(59)
  • 从零开始学习Python控制开源Selenium库自动化浏览器操作,实现爬虫,自动化测试等功能(一)

    介绍Selenium : Selenium是一个用于自动化浏览器操作的开源工具和库。它最初是为Web应用测试而创建的,但随着时间的推移,它被广泛用于Web数据抓取和网页自动化操作。Selenium 支持多种编程语言,包括Python,Java,C#等。 这里我们主要实现采用Python的方式 Selenium 的主要特点和

    2024年01月22日
    浏览(77)
  • Selenium库快速查找网页元素及执行浏览器模拟操作

    Selenium 是一个自动化测试工具,主要用于模拟用户在网页上的行为,进行自动化测试。 它支持多种浏览器,并且可以在多种操作系统上运行。以下是 Selenium 库的一些主要特点和用途: 网页自动化测试: Selenium 可以模拟用户在网页上的各种操作,如点击、输入文本、选择下拉

    2024年04月23日
    浏览(51)
  • python 爬虫热身篇 使用 requests 库通过 HTTP 读取网络数据,使用 pandas 读取网页上的表格,使用 Selenium 模拟浏览器操作

    在过去,收集数据是一项繁琐的工作,有时非常昂贵。机器学习项目不能没有数据。幸运的是,我们现在在网络上有很多数据可供我们使用。我们可以从 Web 复制数据来创建数据集。我们可以手动下载文件并将其保存到磁盘。但是,我们可以通过自动化数据收集来更有效地做

    2023年04月08日
    浏览(74)
  • python爬虫之selenium模拟浏览器

    之前在异步加载(AJAX)网页爬虫的时候提到过,爬取这种ajax技术的网页有两种办法:一种就是通过浏览器审查元素找到包含所需信息网页的真实地址,另一种就是通过selenium模拟浏览器的方法[1]。当时爬的是豆瓣,比较容易分析出所需信息的真实地址,不过一般大点的网站像

    2024年02月03日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包