这个抢购代码为什么无法正常运行


driver = webdriver.Chrome()


def login(url):
    driver.get("https://www.taobao.com")
    time.sleep(3)
    if driver.find_element(By.LINK_TEXT,"亲,请登录"):
        driver.find_element(By.LINK_TEXT,"亲,请登录").click()
        print("请在20秒内完成登录")
        time.sleep(20)
        driver.get(url)
    time.sleep(3)
    now = datetime.datetime.now()
    print("login success:", now.strftime("%Y-%m-%d %H:%M:%S"))


def buy(buytime):
    while True:
        now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

        if now >= buytime:
            try:

                if driver.find_element_by_id("J_LinkBuy"):
                    print("速度点击!!!")
                    driver.find_element_by_id("J_LinkBuy").click()
                    time.sleep(0.09)
                    while now >= buytime:
                        try:
                            print("赶紧买!!!")

                            if driver.find_element_by_class_name("go-btn"):
                                driver.find_element_by_class_name("go-btn").click()
                        except:
                            time.sleep(0.02)
            except:
                time.sleep(0.08)
        print(now)
        time.sleep(0.05)


if __name__ == "__main__":
    times = input("请输入抢购时间:时间格式:2023-05-30 19:45:00.000000")
    url = input("请输入抢购地址")
    login(url)

img

试试这个:


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

def login(url):
    driver = webdriver.Chrome()
    driver.get("https://www.taobao.com")
    time.sleep(3)
    login_link = driver.find_element(By.LINK_TEXT, "亲,请登录")
    login_link.click()
    print("请在20秒内完成登录")
    time.sleep(20)
    driver.get(url)
    time.sleep(3)
    now = datetime.datetime.now()
    print("login success:", now.strftime("%Y-%m-%d %H:%M:%S"))

def buy(buytime):
    driver = webdriver.Chrome()
    while True:
        now = datetime.datetime.now()
        now_str = now.strftime("%Y-%m-%d %H:%M:%S")

        if now >= buytime:
            try:
                link_buy = driver.find_element(By.ID, "J_LinkBuy")
                print("速度点击!!!")
                link_buy.click()
                time.sleep(0.09)
                while now >= buytime:
                    try:
                        print("赶紧买!!!")
                        go_btn = driver.find_element(By.CLASS_NAME, "go-btn")
                        go_btn.click()
                    except:
                        time.sleep(0.02)
            except:
                time.sleep(0.08)
        print(now_str)
        time.sleep(0.05)

if __name__ == "__main__":
    times = input("请输入抢购时间:时间格式:2023-05-30 19:45:00")
    url = input("请输入抢购地址:")
    buytime = datetime.datetime.strptime(times, "%Y-%m-%d %H:%M:%S")
    login(url)
    buy(buytime)

又是网上找的代码嘛?网上要嘛就结算不了要是就被和谐掉,不建议你老使用脚本想去抢购,就不怕后台检测到环境不对给你把号封了?

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
这个代码可能无法正常运行是因为缺少一些必要的库和模块的导入语句,例如:

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

你需要导入这些库以便程序能够正常运行。请在代码开头添加这些导入语句并再次尝试运行。同时请确保已经正确安装了 selenium 库和 Chrome 浏览器驱动。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

这个抢购代码为什么无法正常运行

driver = webdriver.Chrome()
 
 
def login(url):
    driver.get("https://www.taobao.com")
    time.sleep(3)
    if driver.find_element(By.LINK_TEXT,"亲,请登录"):
        driver.find_element(By.LINK_TEXT,"亲,请登录").click()
        print("请在20秒内完成登录")
        time.sleep(20)
        driver.get(url)
    time.sleep(3)
    now = datetime.datetime.now()
    print("login success:", now.strftime("%Y-%m-%d %H:%M:%S"))
 
 
def buy(buytime):
    while True:
        now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
 
        if now >= buytime:
            try:
 
                if driver.find_element_by_id("J_LinkBuy"):
                    print("速度点击!!!")
                    driver.find_element_by_id("J_LinkBuy").click()
                    time.sleep(0.09)
                    while now >= buytime:
                        try:
                            print("赶紧买!!!")
 
                            if driver.find_element_by_class_name("go-btn"):
                                driver.find_element_by_class_name("go-btn").click()
                        except:
                            time.sleep(0.02)
            except:
                time.sleep(0.08)
        print(now)
        time.sleep(0.05)
 
 
if __name__ == "__main__":
    times = input("请输入抢购时间:时间格式:2023-05-30 19:45:00.000000")
    url = input("请输入抢购地址")
    login(url)

在您提供的代码中,有一些问题可能导致程序无法正常运行:

没有配置 Chrome 浏览器的驱动路径。在使用 Selenium WebDriver 操作 Chrome 浏览器时,需要下载对应版本的 Chrome Driver,并将其添加到系统 PATH 环境变量中,或者在代码中指定 Chrome Driver 的路径。

没有处理元素查找异常。在使用 Selenium WebDriver 查找页面元素时,可能会出现元素未找到的异常。需要使用 try...except... 结构来处理异常,避免程序崩溃。

没有设置等待时间。在加载页面和操作元素时,需要等待一定的时间,以确保页面和元素已经加载完毕。可以使用 time.sleep() 函数来设置等待时间,也可以使用 Selenium 提供的显示等待和隐式等待功能。

下面是一个修正后的代码示例:

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

# 设置 Chrome Driver 路径
driver_path = "C:/chromedriver.exe"
driver = webdriver.Chrome(executable_path=driver_path)

def login(url):
    driver.get("https://www.taobao.com")
    time.sleep(3)
    try:
        login_link = driver.find_element(By.LINK_TEXT, "亲,请登录")
        login_link.click()
        print("请在20秒内完成登录")
        time.sleep(20)
    except:
        pass
    driver.get(url)
    now = datetime.datetime.now()
    print("login success:", now.strftime("%Y-%m-%d %H:%M:%S"))

def buy(buytime):
    while True:
        now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

        if now >= buytime:
            try:
                buy_link = driver.find_element_by_id("J_LinkBuy")
                print("速度点击!!!")
                buy_link.click()
                time.sleep(0.09)
                while now >= buytime:
                    try:
                        print("赶紧买!!!")
                        go_button = driver.find_element_by_class_name("go-btn")
                        go_button.click()
                        break
                    except:
                        time.sleep(0.02)
            except:
                time.sleep(0.08)
        print(now)
        time.sleep(0.05)

if __name__ == "__main__":
    times = input("请输入抢购时间:时间格式:2023-05-30 19:45:00.000000")
    url = input("请输入抢购地址")
    login(url)
    buy(times)

在上述代码中,我们添加了 Chrome Driver 的路径设置,以及使用 try...except... 结构来处理元素查找异常。同时,我们使用了 time.sleep() 函数来设置等待时间。

需要注意的是,抢购行为可能违反网站的使用规定,可能会导致法律问题或者账号被封禁等问题。因此,建议您在使用抢购代码前,先了解相关网站的使用规定,并谨慎使用。

没有安装selenium依赖包

可以借鉴下

from selenium.webdriver.common.by import By
from selenium import webdriver
import datetime
import time
 
driver = webdriver.Chrome()
driver.maximize_window()
 
 
def login():
    # 打开淘宝登录页,并进行扫码登录
    driver.get("https://www.taobao.com")
    time.sleep(3)
    if driver.find_element(By.LINK_TEXT, "亲,请登录"):
        driver.find_element(By.LINK_TEXT, "亲,请登录").click()
        driver.find_element(By.XPATH, '//*[@id="login"]/div[1]/i').click()
    print("请在30秒内完成扫码")
    time.sleep(30)
    url3 = "https://cart.taobao.com/cart.htm"  # 淘宝购物车
    driver.get(url3)
    time.sleep(3)
    # 点击购物车里全选按钮
    if driver.find_element(By.ID, "J_SelectAll1"):
        driver.find_element(By.ID, "J_SelectAll1").click()
    else:
        print("找不到购买按钮,请手动点击商品")
    now = datetime.datetime.now()
    print('login success:', now.strftime('%Y-%m-%d %H:%M:%S:%f'))
 
 
def buy(buytime):
    while True:
        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
        # 对比时间,时间到的话就点击结算
        if now >= buytime:
            print("与预定时间1进行比较")
            while True:
                try:
                    # 点击结算按钮
                    if driver.find_element(By.XPATH, '//*[@class="submit-btn"]/span'):
                        driver.find_element(By.XPATH, '//*[@class="submit-btn"]/span').click()  # 结算
                        print("程序锁定商品,结算成功")
                        break
                except:
                    time.sleep(0.001)
            # 点击提交订单按钮
            while True:
                try:
                    # time.sleep(1)
                    if driver.find_element(By.XPATH, '//*[@id="submitOrderPC_1"]/div/a[2]'):
                        driver.execute_script('window.scrollBy(0,250)')
                        driver.find_element(By.XPATH, '//*[@id="submitOrderPC_1"]/div/a[2]').click()  # 提交订单
                        print("订单提交成功")
                        break
                except:
                    time.sleep(0.01)
            now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
            print("已经抢到商品啦,抢到的时间:" + now)
            break
        print("当前时间:" + now)
        time.sleep(0.01)
 
 
if __name__ == "__main__":
    login()
    buy("2022-12-17 10:00:00.000000") #本时间是抢购时间,可根据需求进行更改

以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:

这个代码无法正常运行的原因可能是因为缺少了调用buy函数的语句。可以在login函数中调用buy函数来实现抢购。

具体代码如下:

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

driver = webdriver.Chrome()


def login(url):
    driver.get("https://www.taobao.com")
    time.sleep(3)
    if driver.find_element(By.LINK_TEXT,"亲,请登录"):
        driver.find_element(By.LINK_TEXT,"亲,请登录").click()
        print("请在20秒内完成登录")
        time.sleep(20)
        driver.get(url)
    time.sleep(3)
    now = datetime.datetime.now()
    print("login success:", now.strftime("%Y-%m-%d %H:%M:%S"))
    buy("2023-05-30 19:45:00.000000") # 在登录之后调用buy函数


def buy(buytime):
    while True:
        now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

        if now >= buytime:
            try:

                if driver.find_element_by_id("J_LinkBuy"):
                    print("速度点击!!!")
                    driver.find_element_by_id("J_LinkBuy").click()
                    time.sleep(0.09)
                    while now >= buytime:
                        try:
                            print("赶紧买!!!")

                            if driver.find_element_by_class_name("go-btn"):
                                driver.find_element_by_class_name("go-btn").click()
                        except:
                            time.sleep(0.02)
            except:
                time.sleep(0.08)
        print(now)
        time.sleep(0.05)


if __name__ == "__main__":
    url = input("请输入抢购地址")
    login(url)

这样就可以在登录之后自动调用buy函数进行抢购了。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7689295
  • 你也可以参考下这篇文章:层次分析法步骤及代码编写
  • 除此之外, 这篇博客: 股票数据爬取常用库及方法中的 正则表达式 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 常用正则字符

    符号说明用法举例
    ^开始标记[0-9]+$,其中的含义是以0~9的数字开始
    $结束标记[0-9]+$,其中的含义是以0~9的数字结尾
    *匹配1次或多次,也能匹配空字符串1.re.match(’1′,"),目标字符串是空,能匹配上2.re.match(′[0−9]∗',"),目标字符串是空,能匹配上 2.re.match('^[0-9]*,")2.re.match([09]’,’0‘),目标字符串是数字,能匹配上 3.re.match(’2$’,’c’),目标字符串是字母,不能匹配上
    []表示一个字符集[0-9]+$,的含义是以09的数字开始,这里[0-9]表示包含09的字符集,也就是数字。结合其他正则字符这个表达式的规则是:以09的数字开始,以09的数字结尾,该数字出现一次或多次,归纳起来就是匹配数字
    a-z表示小写字母集3+$,表示以小写字母为开头和结尾,中间小写字母出现1次或多次,也就是说匹配目标字符串是否都是小写字母
    |表示‘或’比如[6|3|0],表示该字符是6或3或0
    {}匹配指定字符n次4 [0-9]{5}$,其中[0-9]{5}需要串联起来解读,匹配5次。该规则完整含义为以6或3或0开头,后面连接5为数字 {m}表示扩展前一个字母m次,{m,n}表示扩展前一个字母m次至n次:ab{1,2}c 表示abc、abbc
    +匹配一次或多次5+$,+的含义是0~9的数字出现1次或多次
    \d数字,等价于[0-9]
    \w单词字符等价于[a-zA-Z0-9]
    ?前一个字符1次或1次扩展abc?表示ab,abc
    [^]非字符集,对单个字符给出排除范围[^abc] 表示非a或b或c的单个字符import
    .表示任何单字符a(.*?)b,表示匹配在a和b之间任何字符进行一次。
    import re
    numStr='111111111111111'
    numPattern='^[0-9]+$'
    if re.match(numPattern,numStr):
        print('All numbers')
    stockPattern='^[6|3|0][0-9]{5}$'
    stockCode='300000'
    if re.match(stockPattern,stockCode):
        print('is stock Code')
    

    re.match(pattern,str)

    pattern为正则匹配规则 ,str为被匹配的字符串

    匹配成功则返回为真

    一般正则表达式这么用

    str='1'
    pattern='^[\d]*$'
    if re.match(pattern,str):
        print('Matched!')
    

    匹配以数字开头数字结尾,数字长度任意

  • 您还可以看一下 孙玖祥老师的图解数据结构与算法课程中的 背包问题代码实现小节, 巩固相关知识点

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个抢购代码无法正常运行的原因可能有以下几点:

  1. 缺少必要的库:代码中使用的是selenium库来进行网页自动化操作,需要确保该库已经安装。可以使用以下命令来安装:
pip install selenium
  1. 缺少Chrome驱动:由于这个代码使用的是Chrome浏览器进行操作,需要下载对应版本的Chrome驱动。可以在Chrome浏览器的设置中查看浏览器版本,并根据版本下载对应的驱动。下载地址为:http://chromedriver.chromium.org/downloads。

  2. 抢购地址错误:如果抢购地址不正确,则程序无法正常运行。需要确保输入的地址是正确的,并且可以正常打开。

  3. 其他错误:代码中可能存在其他错误,导致程序无法正常运行。可以根据程序运行时的报错信息进行排查。

下面是一个完整的可运行的代码,其中包括了上述几点解决方案:

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


def login(url, driver):
    driver.get("https://www.taobao.com")
    time.sleep(3)
    if driver.find_element(By.LINK_TEXT, "亲,请登录"):
        driver.find_element(By.LINK_TEXT, "亲,请登录").click()
        print("请在20秒内完成登录")
        time.sleep(20)
        driver.get(url)
    time.sleep(3)
    now = datetime.datetime.now()
    print("login success:", now.strftime("%Y-%m-%d %H:%M:%S"))


def buy(buytime, driver):
    while True:
        now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

        if now >= buytime:
            try:
                if driver.find_element_by_id("J_LinkBuy"):
                    print("速度点击!!!")
                    driver.find_element_by_id("J_LinkBuy").click()
                    time.sleep(0.09)
                    while now >= buytime:
                        try:
                            print("赶紧买!!!")
                            if driver.find_element_by_class_name("go-btn"):
                                driver.find_element_by_class_name("go-btn").click()
                        except:
                            time.sleep(0.02)
            except:
                time.sleep(0.08)
        print(now)
        time.sleep(0.05)


if __name__ == "__main__":
    # 设置Chrome驱动路径
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')  # 使用无头模式,不显示浏览器
    chrome_options.add_argument('--disable-gpu')  # 禁用GPU加速
    chrome_options.add_argument('--no-sandbox')  # 以最高权限运行
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
    driver = webdriver.Chrome(executable_path='./chromedriver',
                              options=chrome_options)  # 设置相应的路径
    # 输入抢购时间和地址
    times = input("请输入抢购时间:时间格式:2023-05-30 19:45:00.000000")
    url = input("请输入抢购地址")
    login(url, driver)
    buy(times, driver)

需要注意的是,该代码中使用了无头模式(不显示浏览器),如果需要查看操作过程,可以将以下代码注释掉:

chrome_options.add_argument('--headless')

如果我的回答解决了您的问题,请采纳!