Web自动化技术选择
我想学习自动化技术,我的诉求是:
1.我想做自动报社保功能,先从我们自己的系统里面下载Excel,然后自动登录到社保局的系统,自动填写Excel,自动上传Excel。
2.可以自动的到社保局的系统里面查下数据,导出Excel。
使用的技术最好支持C#代码,其次是python。 请帮我推荐最合适的技术方案。
其实是想做一个**“可落地成产品的自动化工具”**,而且你的三个需求跨度很大:
社保局自动化报表(下载 → 登录 → 上传 → 查询)
数据库查询 。
要求 C# 优先,Python 次之。
目标是稳定性、易用性、可扩展性。
经认真分析后,我觉得可以用分层架构 + 混合技术栈的方案,这样既能满足 C#,又能在需要的时候用 Python 的生态优势。
一、总体技术方案
1. 自动化核心
我建议用 Playwright for .NET 而不是 Selenium:
理由:
Playwright 的等待机制、文件上传、事件监听比 Selenium 更现代化、稳定。
支持无头模式(不弹浏览器),可以做成服务后台运行。
对多浏览器(Chrome、Edge、Firefox)支持好,尤其在政务系统这种兼容性差的场景下,可以快速切换浏览器引擎。
用途:
自动登录社保系统(处理验证码)
自动填写表单、上传 Excel
自动导出社保数据
自动登录 CSDN、发布文章
2. 数据生成
数据库 → 文章生成:
用 C# 连接数据库,取出数据,调用 AI API(OpenAI、DeepSeek、讯飞星火等) 生成文章内容。文章排版:
可以用 Markdown 模板(C# 模板引擎 RazorLight)生成格式化的文章,再由自动化脚本发布到 CSDN。
3. 产品化考虑
UI 界面:
Windows 桌面端:WPF / WinForms
Web 后台管理:Blazor Server
任务调度:
Quartz.NET(定时任务,定时执行自动化任务)
账号配置:
用户在 UI 里配置社保局账号、上传模板路径等
日志 & 报错:
NLog/Serilog 记录每次任务运行状态,异常截图存档
部署:
可打包成 EXE,直接在客户电脑上运行
可部署到云端(支持远程执行)
二、针对你的三个需求的技术落地
1. 自动报社保
技术点:
Playwright 自动化 → 登录社保网站
处理验证码(OCR + 打码平台)
下载你系统里的 Excel(直接用 HTTP 请求,不一定需要自动化)
上传 Excel 到社保局
填写附加信息(如果需要)
提交并截图保存凭证
Playwright 上传 Excel 示例(C#):
csharp
await page.SetInputFilesAsync("input[type='file']", @"C:\数据\社保报表.xls"); await page.ClickAsync("#submitBtn");
2. 查询社保局数据并导出
技术点:
Playwright 登录社保局
导航到数据查询页面
自动选择查询条件
点击导出按钮
下载文件并存储到指定目录
可选:自动解析 Excel,导入数据库
Playwright 等待下载示例:
csharp
var downloadTask = page.WaitForDownloadAsync(); await page.ClickAsync("#exportBtn"); var download = await downloadTask; await download.SaveAsAsync(@"C:\数据\社保数据.xls");
3. 数据库生成文章并发布
技术点:
C# 连接数据库(Dapper 或 EF Core)
生成文章:可用 AI API(例如 GPT-4)生成自然语言内容
Playwright 自动登录
自动填写文章标题、内容、标签并发布
Playwright 发布示例:
csharp
复制编辑
await page.GotoAsync("https://www.baidu.com/creation/editor"); await page.FillAsync("textarea[placeholder='请输入文章标题']", "自动化技术方案分享"); await page.FillAsync(".editor-content", "这是自动生成的文章内容..."); await page.ClickAsync("button:has-text('发布')");
三、为什么我建议 Playwright 而不是纯 Selenium
对比项 | Playwright | Selenium |
---|---|---|
稳定性 | 高,自动等待页面元素 | 需手动写等待逻辑 |
文件上传 | 原生支持 SetInputFiles | 依赖 SendKeys |
事件监听 | 有(下载、弹窗、对话框) | 需要额外写逻辑 |
浏览器兼容性 | Chrome、Edge、Firefox、WebKit | Chrome、Edge、Firefox、IE |
并发性能 | 好(多实例运行快) | 一般 |
代码风格 | 现代化 API | 偏旧 |
四、我建议的产品架构
css
[UI层] → WPF / Blazor Server ↓ [业务逻辑层] → 任务调度(Quartz.NET) / 数据生成(AI API) ↓ [自动化执行层] → Playwright for .NET ↓ [数据层] → 数据库(SQL Server / MySQL) / Excel
五、Python 作为补充
虽然你的主语言是 C#,但有些环节用 Python 会更方便:
验证码识别(Python OCR 比 .NET 成熟)
批量 Excel 处理(Pandas 很强)
AI 接口调用(Python SDK 比 .NET 版本多)
可以用 Python 做独立模块,再用 C# 调用 Python 脚本(Process.Start
或 Python.NET)。
六、我的建议
核心自动化 → Playwright for .NET
数据生成 → C# + AI API
验证码识别 → Python OCR(可嵌入 C#)
产品化 → WPF + Quartz.NET + 日志记录
发布形式 → 本地客户端 + 云端同步任务日志