前言
最近发现微软开源了一个非常有意思的项目 ------ Webwright,它是一个让 LLM 具备浏览器操作能力的框架。今天我们就用它环境中的 Playwright 来实现 CSDN 自动发文。
什么是 Webwright?
Webwright 给 LLM 提供了一个终端,可以启动多个浏览器会话来检查页面并完成 Web 任务。它的核心理念是:
- 代码即操作:用 Python 脚本驱动浏览器,而不是逐步预测点击坐标
- 工作区即状态:持久化产物是代码和日志,而不是浏览器会话
- 轻量级设计:核心代理循环仅约 450 行代码
环境搭建
# 创建 Python 3.11 虚拟环境
py -3.11 -m venv venv311
# 激活环境
.\venv311\Scripts\Activate.ps1
# 克隆 Webwright
git clone https://github.com/microsoft/webwright.git
# 安装
pip install -e .\webwright
playwright install chromium
自动发文原理
使用 Playwright 的持久化浏览器上下文(Persistent Context),可以保存登录状态。脚本会:
- 打开 CSDN 博客编辑器
- 检测登录状态,未登录则等待手动登录
- 自动填写标题和 HTML 内容
- 通过 CKEditor API 填充正文,然后点击发布
代码示例
from playwright.async_api import async_playwright
async with async_playwright() as p:
browser = await p.chromium.launch_persistent_context(
user_data_dir="user_data",
headless=False,
)
page = browser.pages[0]
await page.goto("https://editor.csdn.net/md")
# 填写内容、发布...
小结
Webwright 将浏览器视为 agent 可以启动、检查和丢弃的工具,而持久化产物是本地工作区中的代码和日志。这种设计让浏览器自动化变得更加可靠和可复现。
本文由 Playwright (Webwright 环境) 自动发布,展示了 Python 浏览器自动化的实际应用。