wintendo

网络爬虫实战案例:自动化Cuit University文件上传

网络爬虫实战案例:自动化Cuit University文件上传 1. 案例背景与核心问题 本次案例的目标是实现对Cuit University教务管理系统的文件自动化上传。我们的挑战在于,这个过程并非简单的“发送一个文件”,而是一个包含多步认证、会话保持和多阶段API调用的复杂流程。我们将用Python代替浏览器,精确地模拟每一步操作。 2. 分析问题的方法、流程与工具 这是一项典型的“逆向工程”任务,其核心在于模仿浏览器行为。我们的分析方法遵循一个清晰的循环:“观察-假设-验证”。 第一步:观察 – 浏览器是最好的老师 我们从登录页面开始,到文件上传成功,记录了所有请求的URL、方法、请求头(Request Headers)和有效负载(Payload)。 第二步:假设 – 还原数据流动 第三步:验证 – 编写代码并测试 通过不断地测试、观察和调整代码,我们最终成功地将整个流程用Python精确地实现了。 3. 网络安全与管理技术分析 在整个过程中,我们遭遇和分析了服务器端的多种安全和管理措施。 1. 多阶段认证与会话管理 2. 文件类型与安全检查 3. API业务逻辑与数据流 4. 解决这类问题的通用思路与方法 对于任何想用Python实现自动化操作的初学者,我们的经验可以总结为一套通用的方法论。 第一步:明确目标 第二步:手动操作与观察 第三步:识别关键数据 第四步:选择合适的工具 第五步:分阶段实现与验证 以“下载文件”为例 如果要用Python实现文件下载,你的着手点将是: 整个过程依然是:观察-找到URL-发送请求-保存响应。 通过这个案例,我们希望你能明白,网络爬虫不仅仅是编写代码,更是一种严谨的问题分析和解决过程。通过像一个侦探一样,耐心观察、合理假设、反复验证,你就能解开网站背后的谜团,实现几乎任何自动化任务。 https://g.co/gemini/share/d739a714a7d5

 作业提交页面设计

好的,现在请你总结一下我们整个的安装设计部署过程。我希望包括:1、安装过程中可能出错以及遇到的问题和最终的解决办法;2、设计开发过程中可能出错的地方,以及遇到的问题和最终的解决方案;3、测试部署过程中可能出错的地方,以及遇到的问题和最终的解决方案。尽可能的详细,便于将来回顾。  很高兴为你总结我们这次从头到尾的合作过程。这个总结将涵盖你在各个阶段可能遇到的问题、原因以及我们最终找到的解决方案。 1. 安装阶段:环境与依赖 这个阶段的主要挑战是让你的 VPS 环境准备好运行 npm 和 wrangler,并成功安装项目依赖。 2. 设计开发阶段:代码与配置 这个阶段的重点是配置 wrangler.jsonc 文件,并确保你的代码与它协同工作。 3. 测试与部署阶段:验证与上线 这个阶段的挑战是将本地开发环境与线上生产环境进行同步,并验证其功能。 最终的结论 你通过这次实践,不仅成功地部署了一个复杂的 Worker 应用,还深入理解了 Cloudflare 开发工作流中的核心问题。你所遇到的每一个问题,都是一个学习的机会,让你更好地掌握了 npm、wrangler 和 Cloudflare 的配置精髓。 1、前面submit-password和upload两个route路径如何设置应该重点说明;2、通过引入隧道方式,可以方便的实现在headless上的vps能够进行localhost方式的调试;  这两个方面的内容进一步补充  关于路径和隧道:最终总结与补充 1. 路径和路由的重点说明 在整个调试过程中,路径和路由是最大的难点。以下是最终确定的、最可靠的路径设置方案,也是我们之前所讨论的,但这次我将它总结得更加清晰。 你的 Worker 代码中的路径 在你的 index.ts 文件中,所有内部路由都应该被视为根路径。这是因为你的 Worker 代码会负责处理 URL 重写,将外部的复杂路径转换为内部的简单路径。 你的 HTML 中的路径 这是最容易出错的地方。HTML 表单和链接的路径必须确保浏览器将请求正确发送到你的 Worker。 wrangler.jsonc 中的路由 你的本地配置文件只需要声明 Cloudflare 需要监听哪些模式的 URL,以确保它们能够被路由到你的 Worker。 2. 关于 SSH 隧道:本地测试的利器 你使用 SSH 隧道来解决在无头 VPS …

 作业提交页面设计 Read More »

基于WordPress、R2、Pythonworker的AI报告批改系统流程总结

整个项目完成的功能及工作过程总结: 1、学生会在作业提交页面提交各种报告,诸如exp1,exp2,exp3和report等; 2、教师在学生名单上传页面上传名单文件;遵循模版:1)、文件名为“班级ID_名单名称.xlsx”这种形式,如”245_成绩名单.xlsx“,2)、内容要求学号在第2列,名字在第3列 3、上传名单文件后,后台会将此文件上传到r2中,同时在当前页面渲染出名单列表并带上勾选框,下端出现“批改”和“下载”两个按钮; 4、点击“批改”执行的动作:wordpress后台(osaka server)创建任务,把相关数据(主要是任务状态设置为pending,写入学生id等,如果有扩展功能在此添加相关信息)写入wpdb(Wordpress的mysql数据库),然后返回;页面签订可以发送ajax请求查看批改进度(查询数据库,该更新信息有python worker更新);主要的工作来之python worker(phoenix server):通过while循环轮询数据库状态及数据,检测到有任务pending,进行process:从r2自动下载名单文件和指定学生id的报告文件,然后通过grade_document函数(引入Gemini API)进行评分和评论,同时不断在名单文件相应位置(通过代码设置,后续应该在前端页面设置)记录评分,批改过程不断更新wpdb数据库中的状态信息(如当前已批改多少份)也同时在excel名单文件相应位置自动记录分数,最后将批改后的学生报告文件(命名为marked_原始文件名)以及记录了成绩的名单文件回传到r2中; 5、点击“下载”按钮:会对在页面中选中的学生的已批改文件进行zip打包(在wordpress后台执行),从r2端下载到浏览器所在主机 代码部署:1、wordpress的WPCode中的PHP snippet(主要流程功能)和HTML snippet(简单两行,仅提供页面元素的container);2、python worker (获取待批改文件、批改和回传) 需要改进和增加的功能:1、班级ID、成绩位置(如report在”N”位置)、prompt提示词在页面输入;2、出现异常后,EXCEL文件没有记录上(没有机会执行workbook.save函数操作);3、利用cloudflare的page或worker,实现学生作业提交的上传页面和功能,包括对文件名(如2024021238_exp3)、文件类型(.docx)、文件大小(不超过3M)的规范检测,能统计未交学生名单等),同时显示未提交名单;4、修改grade_document()第3个参数为tool的复合对象,使其支持各种AI API及伴随的参数如prompt等;5、将代码和内容引入git管理,利用github进行内容管理和自动发布等 值得记录的现象:1、发现运行python worker后没有打印输出,但在tmp/下又下载了选定待批改文件;经调查发现后台另有一个python worker还在运行,任务被常驻的nohup worker拦截了,后台worker下载了文件,但由于quota限制,没法调用AI;处理办法当然是kill重复的worker进程;2、nohup worker的log一般记录不会实时,error等异常信息是实时记录,导致log中事件不一定按照时间顺序记录,原因是一般记录和异常记录分别有两个buffer,前者要把缓冲写满才落盘,后者要实时落盘;处理办法尤其是在调试是可以加上flush以及时间标签等;3、php的序列化和wpdb记录形式以及python的相应处理这部分内容需要进一步厘清! 以下是AI summary:This is an excellent, comprehensive summary of your project. It’s clear you have a deep understanding of the entire system, from the front-end user experience to the back-end processes and potential …

基于WordPress、R2、Pythonworker的AI报告批改系统流程总结 Read More »

Scroll to Top