Python自动化运维脚本核心库playwright和requests的使用解析
前言
本文针对通用无人值守Python自动化运维脚本,拆解所有用到的标准库与第三方库,脚本所用库分为两类:Python内置标准库(无需额外安装)、第三方开源库(需pip安装),所有库各司其职,共同实现服务巡检、浏览器自动化、日志留存、防多开、异常容错等企业级能力。
一、第三方开源库(自动化核心功能)
1. playwright 浏览器自动化库
通用用途:微软开源的浏览器自动化工具,用于模拟人工操作浏览器,实现页面自动访问、点击、截图等交互行为。
脚本调用方式:采用同步模式启动浏览器,自定义无头/可视化运行模式,自动等待页面元素加载,完成业务点击、弹窗确认、页面截图等全流程自动化操作。
from playwright.sync_api import sync_playwright
# 启动浏览器并执行自动化操作
with sync_playwright() as p:
# 初始化浏览器,配置可视化/无头模式
browser = p.chromium.launch(headless=False)
page = browser.new_page()
# 访问页面、等待元素、模拟点击
page.goto("服务地址")
# 执行页面自动化操作
page.screenshot(path="success.png")
browser.close()
实现效果:无需人工干预,全自动完成网页业务操作,同时留存页面截图,兼容调试可视化运行、服务器无人值守静默运行两种场景。
2. requests 网络请求库
通用用途:简洁易用的HTTP请求库,用于发起网络请求、检测服务连通性与运行状态。
脚本调用方式:循环发起GET请求,校验本地Web服务是否正常启动,等待服务就绪后再执行后续自动化流程,规避服务未加载完成导致的报错。
import requests
import time
# 循环检测服务是否启动
def check_service():
for _ in range(10):
try:
resp = requests.get("服务地址", timeout=10)
if resp.status_code == 200:
return True
except Exception:
time.sleep(5)
return False
实现效果:实现服务自动探活与延时容错,确保浏览器自动化操作仅在服务正常运行后执行,大幅提升脚本稳定性。
二、Python内置标准库(工程化基础能力)
1. os 系统路径与文件库
通用用途:用于操作系统路径、文件夹、文件,实现路径解析、目录创建、文件校验等系统交互功能。
脚本调用方式:自动解析脚本自身绝对路径,统一拼接日志、截图、锁文件路径,自动创建所需文件夹,校验程序文件有效性。
import os
# 获取脚本根目录,统一管理所有资源路径
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# 自动创建文件夹,不存在则新建,存在则跳过
LOG_DIR = os.path.join(BASE_DIR, "logs")
os.makedirs(LOG_DIR, exist_ok=True)
实现效果:彻底解决不同运行目录导致的路径错乱问题,让脚本在任意位置执行都能正常读写文件。
2. sys 系统进程控制库
通用用途:用于管控程序运行状态、进程退出、系统参数与日志输出。
脚本调用方式:实现重复进程拦截、异常退出、状态码返回,适配服务器无人值守、计划任务运行场景。
import sys
import os
# 检测重复运行,防止多开
if os.path.exists("running.lock"):
print("程序已运行,退出")
sys.exit(0)
实现效果:精准管控脚本生命周期,禁止程序多开,异常时正常退出并释放资源。
3. time 时间延时库
通用用途:提供程序延时、休眠功能,用于控制代码运行节奏。
脚本调用方式:设置服务探活轮询间隔,匀速重试请求,避免高频请求占用服务器资源。
import time
# 每隔60秒重试一次服务检测
SERVICE_CHECK_INTERVAL = 60
time.sleep(SERVICE_CHECK_INTERVAL)
实现效果:平稳控制服务等待节奏,兼顾检测效率与服务器资源占用。
4. datetime 时间戳库
通用用途:用于生成标准化时间字符串,实现时间记录与命名归档。
脚本调用方式:每次脚本启动生成唯一秒级时间戳,用于日志文件、截图文件的命名,实现每次任务独立归档。
from datetime import datetime
# 生成统一格式时间戳
run_ts = datetime.now().strftime("%Y%m%d_%H%M%S")
log_file = f"{run_ts}.log"
实现效果:每一次自动化任务的日志、截图独立命名,可精准溯源每一次运行记录。
5. logging 标准化日志库
通用用途:Python官方日志库,支持分级日志输出、文件持久化、控制台同步打印。
脚本调用方式:自定义日志格式,同时输出日志到控制台和本地时间戳日志文件,区分正常日志与异常报错日志。
import logging
# 初始化日志配置
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# 打印普通日志
logger.info("任务执行成功")
# 打印异常日志
logger.error("任务执行失败")
实现效果:全程留存脚本运行记录与异常堆栈,解决黑盒运行、报错无依据的问题。
6. ctypes Windows系统调用库
通用用途:Python调用Windows系统原生接口,实现进程查询、系统权限操作。
脚本调用方式:读取锁文件中的进程ID,调用系统接口检测进程是否存活,自动清理僵死无效锁文件。
import ctypes
# Windows系统进程检测
kernel32 = ctypes.WinDLL("kernel32", use_last_error=True)
# 判断进程是否存在,清理残留锁
实现效果:自动解决脚本异常退出导致的锁残留、程序无法启动的卡死问题,保障脚本循环稳定运行。
三、整体库能力总结
第三方库 playwright + requests 承担核心业务能力,实现浏览器自动化操作、服务健康巡检;6大内置标准库承担工程化兜底能力,实现路径兼容、进程防护、日志溯源、异常容错、系统适配。所有库轻量化、无冗余,搭配适配Windows服务器无人值守、开机自启、定时自动化运维场景,是一套极简且高稳定的Python自动化脚本技术组合。