目录

目录结构

1. appsettings.json(账号、URL、路径配置)

2. Program.cs(启动入口)

3. SchedulerConfig.cs(定时调度)

4. SocialSecurityTask.cs(自动报社保任务)

5. QuerySocialDataTask.cs(查询导出任务)

6. PublishCsdnTask.cs(发布 CSDN 文章)

7. 后续可加功能


可直接运行的 Playwright C# 自动化模板,里面包含:

  • 报社保任务(模拟登录 → 上传 Excel)
  • 查询导出任务(模拟登录 → 查询 → 下载 Excel)
  • 发布文章任务(自动登录 → 填写标题与内容 → 发布)
  • Quartz.NET 定时调度(可配置执行周期)
  • 配置文件管理(账号、密码、URL、文件路径)
  • 日志记录 & 截图保存
  • 验证码识别预留接口(可以后续接 Python OCR)

目录结构

AutoTasks/├── AutoTasks.csproj├── appsettings.json         // 配置账号密码├── Program.cs               // 启动调度器├── SchedulerConfig.cs       // Quartz 调度配置├── Tasks/│    ├── SocialSecurityTask.cs // 报社保任务│    ├── QuerySocialDataTask.cs // 查询导出任务│    ├── PublishCsdnTask.cs    // 发布任务├── Services/│    ├── OcrService.cs         // 验证码识别接口(可接Python)│    ├── ExcelService.cs       // Excel处理│    ├── AiContentService.cs   // AI生成文章└── Logs/└── ...                   // 自动化运行截图 & 日志

1. appsettings.json(账号、URL、路径配置)

{"SocialSecurity": {"LoginUrl": "https://example.com/social/login","Username": "your_username","Password": "your_password","UploadFilePath": "C:\\报表\\社保.xls"},"Csdn": {"LoginUrl": "https://**.net/creation/editor","Username": "your_username","Password": "your_password"},"Paths": {"DownloadFolder": "C:\\数据导出","ScreenshotFolder": "Logs"}
}

2. Program.cs(启动入口)

using System.Threading.Tasks;class Program
{public static async Task Main(){await SchedulerConfig.Start();Console.WriteLine("任务调度已启动,按 Ctrl+C 停止。");await Task.Delay(-1);}
}

3. SchedulerConfig.cs(定时调度)

using Quartz;
using Quartz.Impl;public class SchedulerConfig
{public static async Task Start(){StdSchedulerFactory factory = new StdSchedulerFactory();var scheduler = await factory.GetScheduler();await scheduler.Start();// 每月5号 10:00 报社保var socialJob = JobBuilder.Create<SocialSecurityTask>().Build();var socialTrigger = TriggerBuilder.Create().WithCronSchedule("0 0 10 5 * ?").Build();await scheduler.ScheduleJob(socialJob, socialTrigger);// 每周一 09:00 查询社保数据var queryJob = JobBuilder.Create<QuerySocialDataTask>().Build();var queryTrigger = TriggerBuilder.Create().WithCronSchedule("0 0 9 ? * MON").Build();await scheduler.ScheduleJob(queryJob, queryTrigger);// 每周二 09:30 发布文章var csdnJob = JobBuilder.Create<PublishCsdnTask>().Build();var csdnTrigger = TriggerBuilder.Create().WithCronSchedule("0 30 9 ? * TUE").Build();await scheduler.ScheduleJob(csdnJob, csdnTrigger);}
}

4. SocialSecurityTask.cs(自动报社保任务)

using Quartz;
using Microsoft.Playwright;
using Microsoft.Extensions.Configuration;public class SocialSecurityTask : IJob
{public async Task Execute(IJobExecutionContext context){var config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();var url = config["SocialSecurity:LoginUrl"];var username = config["SocialSecurity:Username"];var password = config["SocialSecurity:Password"];var filePath = config["SocialSecurity:UploadFilePath"];var screenshotFolder = config["Paths:ScreenshotFolder"];using var playwright = await Playwright.CreateAsync();var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });var page = await browser.NewPageAsync();try{await page.GotoAsync(url);await page.FillAsync("#username", username);await page.FillAsync("#password", password);// TODO: 验证码处理 - 调用 OcrService// var captchaText = await OcrService.RecognizeAsync(page);// await page.FillAsync("#captcha", captchaText);await page.ClickAsync("#loginBtn");await page.SetInputFilesAsync("input[type='file']", filePath);await page.ClickAsync("#submitBtn");await page.ScreenshotAsync(new PageScreenshotOptions{Path = $"{screenshotFolder}\\SocialSecurity_{DateTime.Now:yyyyMMddHHmmss}.png"});}catch (Exception ex){Console.WriteLine($"报社保任务失败: {ex.Message}");}finally{await browser.CloseAsync();}}
}

5. QuerySocialDataTask.cs(查询导出任务)

using Quartz;
using Microsoft.Playwright;public class QuerySocialDataTask : IJob
{public async Task Execute(IJobExecutionContext context){Console.WriteLine("执行社保数据查询并导出...");// 和 SocialSecurityTask 类似,登录后执行查询与下载}
}

6. PublishCsdnTask.cs(发布 CSDN 文章)

using Quartz;
using Microsoft.Playwright;public class PublishCsdnTask : IJob
{public async Task Execute(IJobExecutionContext context){Console.WriteLine("执行发布文章任务...");// 登录,填写标题和内容,点击发布}
}

7. 后续可加功能

  • 验证码自动识别:OcrService 接入 Python 脚本或打码平台
  • Excel 数据处理:ExcelService 用 EPPlus 读取、写入 Excel
  • 文章 AI 生成:AiContentService 调用 GPT API 生成内容
  • 任务失败重试:Quartz 支持失败任务重试策略
  • 打包成 EXEdotnet publish -r win-x64

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918689.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918689.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918689.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云平台监控-云原生环境Prometheus企业级监控实战

目录 一、基于 Kubernetes 的 Prometheus 监控方案概述 1. 核心组件及功能 2. 监控流程详解 3. 关键监控指标说明 二、Prometheus 与相关组件部署 1. 克隆项目代码 2. 安装 Prometheus Operator 3. 安装 Prometheus Stack 4. 查看容器运行状态 三、ServiceMonitor 配…

GPT-5 有点不太顺

GPT-5 有点不太顺 OpenAI 的新模型 GPT-5 盼了很久,结果一上线就问题不少。 发布会刚过,CEO 山姆・奥特曼就说,要给部分用户恢复 GPT-4o 这些老模型的使用权限,还承认 GPT-5 上线 “比预想的坎坷”。 简单题都做错了 不少用户发现,GPT-5 连一些简单问题都答不对,比之前…

《卷积神经网络(CNN):解锁视觉与多模态任务的深度学习核心》

1.概述卷积神经网络&#xff08;CNN&#xff09;是深度学习在计算机视觉领域的重要突破&#xff0c;专为处理网格状数据&#xff08;如图像&#xff09;设计&#xff0c;后也扩展到自然语言处理等领域。它解决了全连接网络处理大图像时计算代价高、特征保留差的问题&#xff0c…

React Native + Expo搭建APP项目+安卓模拟器

Expo 尝试一下就好&#xff0c;毕竟参考代码太少&#xff0c;相当于闭关造轮子&#xff0c;不建议。 一、需要的工具 1. node.js&#xff0c;推荐使用&#xff08;TLS版本&#xff09;&#xff0c;版本不是太低就行&#xff0c;测试用的v20.12.2的Node 2. 开发工具 VS CODE或…

第六十五章:AI的“精良食材”:图像标注、视频帧抽帧与字幕提取技巧

ai 数据处理前言&#xff1a;从“原始食材”到“AI盛宴”第一章&#xff1a;图像标注&#xff1a;为AI“指点江山”1.1 什么是图像标注&#xff1f;—— AI的“视觉标签”1.2 分类任务&#xff1a;图像的“身份识别”1.3 目标检测&#xff1a;图像的“区域识别”与“边界框”1.…

2025 开源语音合成模型全景解析:从工业级性能到创新架构的技术图谱

一、引言&#xff1a;开源浪潮下的语音合成技术跃迁 语音合成&#xff08;TTS&#xff09;作为人工智能领域的核心技术&#xff0c;近年来在开源社区的推动下取得了突破性进展。从早期的基于规则的拼接合成&#xff0c;到深度学习驱动的端到端模型&#xff0c;再到当前与大语言…

前端懒加载技术全面解析

懒加载(Lazy Loading)是一种优化前端性能的重要技术,核心思想是延迟加载非关键资源,只在需要时加载它们。 一、懒加载的基本原理 懒加载的核心思想是通过以下方式优化性能: 减少初始加载实践: 只加载首屏所需资源 节省带宽和内存: 避免加载用户可能不会查看的内容 提高…

B3DM,OSGB,PLY,OBJ,S3MB,I3S这几种格式有什么区别

B3DM、OSGB、PLY、OBJ、S3MB、I3S 都是三维模型/地理空间数据的文件格式&#xff0c;但它们的用途、结构和适用场景差别很大。1. B3DM&#xff08;Batched 3D Model&#xff09;来源/用途&#xff1a;属于 Cesium 3D Tiles 规范&#xff0c;用于在 Cesium、Mapbox 这种 WebGIS …

Matlab(4)

一、Basic plotting1.plot&#xff08;&#xff09;plot(x,y) &#xff1a;x图片中点的横坐标&#xff0c;y图片中点的纵坐标plot(y) &#xff1a;y图片中点的纵坐标&#xff0c;x图片中点的横坐标默认为1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5........plot(co…

Pycharm选好的env有包,但是IDE环境显示无包

一、异常现象 Pycharm选好的env&#xff08;yolov7&#xff09;&#xff1a; 有Numpy这个包&#xff1a; IDE环境愣是报没有&#xff1a; 二、尝试解决 2.1 重新启动pycharm 重新打开.py文件&#xff1a; 还是不行&#xff1a; 看看好使的windows上的pycharm参数&#xff1a…

深入理解 Linux 下的 GDB 调试工具

引言 在软件开发中&#xff0c;调试是一个不可避免且至关重要的环节。无论是简单的逻辑错误&#xff0c;还是复杂的内存泄漏问题&#xff0c;调试工具都能帮助我们快速定位并修复问题。而在 Linux 系统中&#xff0c;GDB&#xff08;GNU 调试器&#xff09;是最强大、最常用的…

让齿轮与斑马线共舞:汽车文化驿站及安全教育基地的展陈实践

当汽车文化驿站及安全教育基地的展陈项目图纸在绘图仪上初现轮廓时&#xff0c;我们就明确了一个核心命题&#xff1a;如何让 “速度与激情” 的汽车文化&#xff0c;与 “规则与敬畏” 的安全教育在同一空间里和谐共生&#xff0c;而非简单拼接。这不是两个独立展区的物理叠加…

Flask + Vue.js 物联网数字大屏实现方案

我将为您创建一个精美的物联网数字大屏,使用Flask作为后端提供数据,Vue.js作为前端展示,全部集成在单个HTML文件中实现。 设计思路 整体布局: 深色主题背景提高数据可视性 顶部标题栏显示系统名称和时间 中央区域分为多个数据卡片 底部显示系统状态信息 核心功能: 实…

Excel怎么筛选重复项?【图文详解】查找/删除重复项?查找重复项公式?如何去重?

一、问题背景 在使用 Excel 整理数据时&#xff0c;我们经常会遇到重复内容。这些重复项不仅会让表格显得杂乱&#xff0c;还可能影响数据统计的准确性。比如学生成绩表中重复的分数、员工信息表中重复的姓名等&#xff0c;都需要及时筛选出来处理。其实&#xff0c;筛选重复项…

模板打印技术——自动识别office类型 打印模板:为政务土地确权定制的替换利器—仙盟创梦IDE

代码for (int i 0; i < tmpcount; i){string tmptable dt.Rows[i]["tmpname"].ToString().Trim();string doctype dt.Rows[i]["doctype"].ToString().Trim();if (doctype "doc"){doc_pagecount cyberwin_replacr_tmpes_files(dgvr, tmpt…

MongoDB分析insert源代码

mongo插入单条文档insert()> db.user.insert({ ... "name": "alice", ... "age": 28 ... }); WriteResult({ "nInserted" : 1 }) >MongoDB插入文档代码调用链如下&#xff1a;mongo/db/commands/write_commands/write_c…

react路由跳转与路由懒加载等(对照vue来说一说不同之处)

前言&#xff1a;react路由跳转与路由懒加载等路由懒加载&#xff1a;使用 loadable/component 插件来实现安装&#xff1a;npm i loadable/component具体使用&#xff1a;1、引入loadable/component2、正常封装的地方const HomeLoadable(()>import(./views/Home.jsx));也可…

Nginx 架构和安装

二、.Nginx 架构和安装 2.1 Nginx 概述 2.1.1 Nginx 介绍 Nginx&#xff1a;engine X &#xff0c;2002年开发&#xff0c;分为社区版和商业版(nginx plus ) 2019年3月11日 F5 Networks 6.7亿美元的价格收购 Nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务…

HarmonyOS NDK的JavaScript/TypeScript与C++交互机制

HarmonyOS NDK的JavaScript/TypeScript与C交互机制 细解释这个调用流程&#xff1a; 整体架构流程 ArkTS/JavaScript ←→ .d.ts (类型定义) ←→ NAPI ←→ .cpp (C实现)文件结构和作用 项目结构示例&#xff1a; MyHarmonyApp/ ├── entry/src/main/ets/ # ArkTS应…

[激光原理与应用-226]:机械 - 如何学习3D图设计

学习机械领域的3D图设计需要系统掌握软件操作、设计思维、工程规范和实战经验。以下是分阶段的学习路径和实用建议&#xff0c;帮助你高效入门并提升技能&#xff1a;一、基础准备阶段1. 明确学习目标方向选择&#xff1a;根据兴趣确定细分领域&#xff08;如机械零件设计、钣金…