Python如何遍历数字数组同时随机逐个获取邮箱数组元素
实现方案
核心逻辑说明
你提到并非完全随机逐个取邮箱,这里提供两种常用实现,可按需选择:
- 轮询取数:按邮箱数组顺序逐个取用,用完后从头循环,取数顺序固定
- 每轮无重复随机取:每一轮遍历numbers前先打乱邮箱数组,逐个取用,每一轮内邮箱不会重复,整体顺序随机
修正后代码(含轮询取邮箱实现)
import time # 补充缺失的selenium相关导入,需提前安装selenium库 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By numbers = [2589001,2589002,2589003,2589004,2589005,2589006,2589007,2589008,2589009,2589010] email = ["mail1@gmail.com","mail2@gmail.com","mail3@gmail.com","mail4@gmail.com","mail5@gmail.com"] # 全局邮箱计数器,维护取数位置 email_idx = 0 def oo() : global email_idx # 取当前位置的邮箱,取完自动循环 selected_email = email[email_idx % len(email)] email_idx += 1 return selected_email def vs () : for idx, nm in enumerate(numbers) : # Number Input 修正原代码笔误nw为nm WebDriverWait(browser, 2500).until(EC.presence_of_element_located((By.NAME, "Number"))).send_keys(nm) time.sleep(1) # 调用oo()拿到邮箱直接填入 WebDriverWait(browser, 2500).until(EC.presence_of_element_located((By.NAME, "Number"))).send_keys(oo()) time.sleep(1) w = 0 while w < 50 : vs () w += 1
若需要每轮随机无重复取邮箱,替换oo函数即可
import random # 存储当前轮次的随机邮箱队列 current_email_queue = [] def oo() : global current_email_queue # 队列为空时重新生成打乱的邮箱列表 if not current_email_queue: current_email_queue = random.sample(email, len(email)) # 取出队列第一个元素 return current_email_queue.pop(0)
注意事项
- 原代码中
browser对象需要提前初始化,比如browser = webdriver.Chrome(),否则会运行报错 - WebDriverWait的第二个参数是等待秒数,2500秒过长,建议调整为10~30即可
内容的提问来源于stack exchange,提问作者Raaj
相关产品推荐
相关产品推荐

