当前位置: 首页 > news >正文

服务器怎么做看视频的网站怎么申请网页域名

服务器怎么做看视频的网站,怎么申请网页域名,方法数码做的网站怎么样,百度搜索首页文章目录 示例一:常见装饰器编写重试机制示例二#xff1a;使用类实现装饰器示例三#xff1a;使用函数装饰器并返回闭包示例四#xff1a;使用 wrapt 模块 示例一:常见装饰器编写重试机制 示例代码 import time import traceback import logging from typing import Call… 文章目录 示例一:常见装饰器编写重试机制示例二使用类实现装饰器示例三使用函数装饰器并返回闭包示例四使用 wrapt 模块 示例一:常见装饰器编写重试机制 示例代码 import time import traceback import logging from typing import Callable from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, WebDriverException, TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC# 设置日志配置 logging.basicConfig(levellogging.ERROR) logger logging.getLogger(__name__)# 假设 DOME 是一个配置字典用于控制 DEBUG 模式 DOME {DEBUG: False,debug: False }def exr_func(*args, **kwargs):# 在每次重试前执行的操作可以在此添加刷新页面等逻辑driver kwargs.get(driver)if driver:driver.refresh()time.sleep(2) # 等待页面刷新完成def dec_retry(num1, exr: Callable lambda *_, **__: None, catchException, excludeException, out_errorTrue):装饰器重复执行func并忽略异常超过次数抛出异常或返回空此函数默认输出异常信息def decorator(func):def dec(*args, **kwargs):for i in range(1, num 1):try:return func(*args, **kwargs)except exclude as err:raise errexcept catch as err:logger.error(f第 {i} 次执行失败)if out_error:logger.error(err, traceback.format_exc(), sep\n)if DOME.get(DEBUG) or DOME.get(debug):logger.error(已开启 DEBUG 模式直接抛出异常)raise errif i num:logger.error(f已执行 {num} 次抛出异常)raise errlogger.error(开始重试)exr(*args, **kwargs)return decreturn decoratordec_retry(num3, exrexr_func, catch(NoSuchElementException, WebDriverException, TimeoutException)) def login(driver, username, password):# 访问登录页面driver.get(https://example.com/login)# 等待页面加载完成WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, username)))# 输入用户名username_field driver.find_element(By.ID, username)username_field.send_keys(username)# 输入密码password_field driver.find_element(By.ID, password)password_field.send_keys(password)# 点击登录按钮login_button driver.find_element(By.ID, loginButton)login_button.click()# 等待页面加载完成并检查是否登录成功WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, logoutButton)))print(登录成功)return Truedef main():# 设置WebDriverdriver webdriver.Chrome()username your_usernamepassword your_passwordtry:login(driver, username, password, driverdriver)except Exception as e:logger.error(f最终登录失败异常: {e})driver.quit()if __name__ __main__:main()代码解释 日志配置: 设置日志记录配置用于输出错误信息。exr_func 函数: 定义了在每次重试前执行的操作例如刷新页面。dec_retry 装饰器: 实现了重试机制捕获指定异常在重试次数用尽前会执行 exr_func 函数。login 函数: 实现具体的登录操作并被 dec_retry 装饰器装饰。main 函数: 设置 WebDriver尝试登录并在失败时输出日志信息。 示例二使用类实现装饰器 类装饰器可以更灵活地管理状态并且可以更好地组织复杂的逻辑。 import time import traceback import logging from typing import Callable from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, WebDriverException, TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC# 设置日志配置 logging.basicConfig(levellogging.ERROR) logger logging.getLogger(__name__)# 假设 DOME 是一个配置字典用于控制 DEBUG 模式 DOME {DEBUG: False,debug: False }def exr_func(*args, **kwargs):driver kwargs.get(driver)if driver:driver.refresh()time.sleep(2) # 等待页面刷新完成class RetryDecorator:def __init__(self, num1, exr: Callable lambda *_, **__: None, catchException, excludeException, out_errorTrue):self.num numself.exr exrself.catch catchself.exclude excludeself.out_error out_errordef __call__(self, func):def wrapped_func(*args, **kwargs):for i in range(1, self.num 1):try:return func(*args, **kwargs)except self.exclude as err:raise errexcept self.catch as err:logger.error(f第 {i} 次执行失败)if self.out_error:logger.error(err, traceback.format_exc(), sep\n)if DOME.get(DEBUG) or DOME.get(debug):logger.error(已开启 DEBUG 模式直接抛出异常)raise errif i self.num:logger.error(f已执行 {self.num} 次抛出异常)raise errlogger.error(开始重试)self.exr(*args, **kwargs)return wrapped_funcRetryDecorator(num3, exrexr_func, catch(NoSuchElementException, WebDriverException, TimeoutException)) def login(driver, username, password):driver.get(https://example.com/login)WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, username)))username_field driver.find_element(By.ID, username)username_field.send_keys(username)password_field driver.find_element(By.ID, password)password_field.send_keys(password)login_button driver.find_element(By.ID, loginButton)login_button.click()WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, logoutButton)))print(登录成功)return Truedef main():driver webdriver.Chrome()username your_usernamepassword your_passwordtry:login(driver, username, password, driverdriver)except Exception as e:logger.error(f最终登录失败异常: {e})driver.quit()if __name__ __main__:main()示例三使用函数装饰器并返回闭包 使用闭包使代码更简洁。 import time import traceback import logging from typing import Callable from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, WebDriverException, TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EClogging.basicConfig(levellogging.ERROR) logger logging.getLogger(__name__)DOME {DEBUG: False,debug: False }def exr_func(*args, **kwargs):driver kwargs.get(driver)if driver:driver.refresh()time.sleep(2)def dec_retry(num1, exr: Callable lambda *_, **__: None, catchException, excludeException, out_errorTrue):def decorator(func):def wrapped_func(*args, **kwargs):for i in range(1, num 1):try:return func(*args, **kwargs)except exclude as err:raise errexcept catch as err:logger.error(f第 {i} 次执行失败)if out_error:logger.error(err, traceback.format_exc(), sep\n)if DOME.get(DEBUG) or DOME.get(debug):logger.error(已开启 DEBUG 模式直接抛出异常)raise errif i num:logger.error(f已执行 {num} 次抛出异常)raise errlogger.error(开始重试)exr(*args, **kwargs)return wrapped_funcreturn decoratordec_retry(num3, exrexr_func, catch(NoSuchElementException, WebDriverException, TimeoutException)) def login(driver, username, password):driver.get(https://example.com/login)WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, username)))username_field driver.find_element(By.ID, username)username_field.send_keys(username)password_field driver.find_element(By.ID, password)password_field.send_keys(password)login_button driver.find_element(By.ID, loginButton)login_button.click()WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, logoutButton)))print(登录成功)return Truedef main():driver webdriver.Chrome()username your_usernamepassword your_passwordtry:login(driver, username, password, driverdriver)except Exception as e:logger.error(f最终登录失败异常: {e})driver.quit()if __name__ __main__:main()示例四使用 wrapt 模块 wrapt 是一个强大的装饰器库可以更轻松地编写装饰器特别是处理复杂逻辑时。 import time import traceback import logging import wrapt from typing import Callable from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, WebDriverException, TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EClogging.basicConfig(levellogging.ERROR) logger logging.getLogger(__name__)DOME {DEBUG: False,debug: False }def exr_func(*args, **kwargs):driver kwargs.get(driver)if driver:driver.refresh()time.sleep(2)def dec_retry(num1, exr: Callable lambda *_, **__: None, catchException, excludeException, out_errorTrue):wrapt.decoratordef wrapper(wrapped, instance, args, kwargs):for i in range(1, num 1):try:return wrapped(*args, **kwargs)except exclude as err:raise errexcept catch as err:logger.error(f第 {i} 次执行失败)if out_error:logger.error(err, traceback.format_exc(), sep\n)if DOME.get(DEBUG) or DOME.get(debug):logger.error(已开启 DEBUG 模式直接抛出异常)raise errif i num:logger.error(f已执行 {num} 次抛出异常)raise errlogger.error(开始重试)exr(*args, **kwargs)return wrapperdec_retry(num3, exrexr_func, catch(NoSuchElementException, WebDriverException, TimeoutException)) def login(driver, username, password):driver.get(https://example.com/login)WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, username)))username_field driver.find_element(By.ID, username)username_field.send_keys(username)password_field driver.find_element(By.ID, password)password_field.send_keys(password)login_button driver.find_element(By.ID, loginButton)login_button.click()WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, logoutButton)))print(登录成功)return Truedef main():driver webdriver.Chrome()username your_usernamepassword your_passwordtry:login(driver, username, password, driverdriver)except Exception as e:logger.error(f最终登录失败异常: {e})driver.quit()if __name__ __main__:main()
http://www.dnsts.com.cn/news/168032.html

相关文章:

  • 免费广告投放网站零基础月做网站多久
  • 跳转到另一个网站怎么做我图网ppt免费下载
  • 济南建设银行公积金网站诚信网站平台建设方案
  • 微信链接网站怎么做的空间设计大师
  • 长春做网站的公司有哪些网页设计的主题
  • 北京大学学术学风建设网站wordpress源码安装
  • 淮安做网站找哪家好家用电脑做网站后台
  • 做一份seo网站诊断wordpress源代码怎么修改
  • 网站制作网站开发ple id充值建设特效网站
  • 双桥集团网站建设Wordpress 插件购买
  • 网站如何发布到网上wordpress禁止访问模版页面
  • 普洱市交通建设集团官方网站中信建投证券股份有限公司
  • 石家庄云图网站建设哈尔滨公司做网站
  • 网站建设可行性方案接私活做网站
  • 北京安慧桥网站建设宁波高端网站建设
  • 怎么黑网站上海校园兼职网站建设
  • 晚上做设计挣钱的网站十大门户网站有哪些
  • 房地产型网站建设网站顶端flash
  • 广西医科大学网站建设素材免费下载网站
  • 设计一个商务网站vestacp配置wordpress
  • 浦东做营销网站公司做宣传网站
  • 无锡seo网站推广中企动力天津分公司
  • 装修公司网站建设的意义网站建站外包公司
  • 在线flash相册网站源码网站后台管理界面下载
  • 旅游投资公司网站建设建设银行个人网银登录
  • 网站404页面做晚了园林网站免费模板
  • 外外贸网站推广方案廊坊百度推广优化
  • 安徽品质网站建设创新网站建设_超速云建站
  • 北京东城做网站免费商标查询平台
  • 哪些网站用天平做logo滁州网站开发公司