基于Python的电影推荐系统:Django实现与协同过滤实战
简介面向毕业设计、课程设计与Python/Django学习者的在线电影推荐系统完整项目包覆盖数据采集、预处理、特征提取、相似度计算、推荐算法到可视化展示全流程。系统采用余弦相似度与协同过滤思路可帮助用户构建个性化电影推荐服务适合需要快速搭建原型或撰写论文的本科、专科学生及相关开发者。压缩包共392个文件约9.76MB主要包含28个Python源码含核心脚本movie_recommender.py、43个pyc编译文件、35个CSS样式、62个JS脚本、9个HTML页面以及用于展示电影海报与界面效果的91张JPG、34张PNG图片和75个GIF动图另有SQL数据库文件可供初始化数据。源码模块划分清晰静态资源与后端逻辑分离方便二次开发与功能扩展。已有255人学习下载适合作为毕业设计参考、课程项目改进素材或推荐系统入门实践。1. 在线电影推荐系统到底解决什么问题第一次拿到这份基于 Python 的在线电影推荐系统 zip 包时我以为是轻量爬虫脚本解压之后发现里面同时躺着 Django 后端和一套完整的前端主题资源——这是一个能出演示效果的课程设计级项目。它的核心逻辑建立在两条线上一条从网页端收集用户的播放、评分行为另一条用协同过滤和内容相似度计算对电影库做个性化排序最终把推荐结果渲染成带海报的页面。对毕设和课设来说它最大的价值就是“能跑、看得见、答辩有交代”对刚入行想做推荐系统的工程师来说它是理解用户画像、余弦相似度、召回排序这套闭环的最佳起步样本。你需要先清楚一点推荐系统是数据敏感型应用算法只占三分之一另外三分之二在数据清理和参数调优。这份资源里 movie_recommender.py 是算法入口但它不会自己长出数据也不会自动适配你的 MySQL 密码。接下来的内容我会按照“项目结构 → 数据落库 → 推荐算法 → 启动运行 → 避坑 → 效果验证”的顺序把每个环节的操作细节和翻车点说透。2. 项目骨架与数据层看懂 zip 里装了什么2.1 静态资源与 Python 代码的分工解压 zip 之后你大概率能看到两类文件一类是 agriox.css、bootstrap.min.css、layui.css、animate.min.css、custom-animate.css 这类前端资源另一类是核心的 Python 代码文件。CSS 文件的存在说明项目不是 API-only 的后端而是“前端渲染 后端接口”的完整 Web 应用。我们常说的 Django 模板机制会让 HTML 文件引用这些静态资源Django 在开发环境下通过{% static %}标签把 css 文件映射到/static/路径下。如果你发现页面打开后样式全丢十有八九是 settings.py 里STATIC_URL配置不对或者静态文件压根没放到static/目录下。我一般会把 zip 里的目录结构做一次归位再开始动代码unzip 基于python的在线电影推荐系统.zip -d movie_recommender cd movie_recommender python --version # 确认当前 Python 版本低于 3.6 建议先升级提示在 Windows 上解压后记得检查项目根目录下有没有manage.py。如果没有说明你拿到的只是某个 app 目录需要自己拼进一个 Django 工程。2.2 数据采集与预处理爬虫部分的常规写法项目摘要里提到的数据收集常见做法是用 requests 抓取公开的电影详情页然后用 BeautifulSoup 解析标题、导演、演员、类型字段最后把干净数据写入数据库。movie_recommender.py 里通常会有类似fetch_movie_list的函数负责这件事。import requests import pandas as pd from bs4 import BeautifulSoup from sqlalchemy import create_engine def fetch_movie_list(url, pages5): movie_rows [] for page in range(1, pages 1): try: resp requests.get(url, params{start: (page - 1) * 25}, timeout10) soup BeautifulSoup(resp.text, html.parser) for item in soup.select(.movie-item): title item.select_one(.title).text.strip() genres [g.text for g in item.select(.genre)] score item.select_one(.score).text movie_rows.append({title: title, genres: |.join(genres), score: float(score)}) except requests.RequestException as e: print(f第 {page} 页抓取失败: {e}) continue return pd.DataFrame(movie_rows)这里有两个细节需要说明。params参数控制翻页起点start每次加 25 是常规的列表页分页逻辑.movie-item、.genre这些选择器必须按目标页面实际 HTML 结构调整写死之后如果页面改版就要重新检查。我建议把 pages 参数从 5 调小到 2 做冒烟测试确认能拿到数据再完整跑避免一次性触发访问频率限制。数据抓回来之后还不能直接入库。重复标题要去重空值要补默认值时间字段要统一格式评分要做区间校验。预处理做得越干净后面算相似度时产生的脏数据就越少。2.3 系统需要哪几张数据表建表 SQL 与字段选择在线电影推荐系统虽然是课程设计但表结构设计不能太“学生气”。至少需要四张表用户表、电影表、评分表、推荐结果缓存表。评分表是整个推荐系统的核心因为协同过滤的输入就是“用户—物品—行为”三元组。CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(64) NOT NULL UNIQUE, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE movie ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, director VARCHAR(128), actors VARCHAR(512), genres VARCHAR(128), release_year SMALLINT, poster_url VARCHAR(512), avg_rating DECIMAL(3,2) ); CREATE TABLE rating ( user_id INT NOT NULL, movie_id INT NOT NULL, score TINYINT NOT NULL, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, movie_id), CONSTRAINT fk_rating_user FOREIGN KEY (user_id) REFERENCES user(id), CONSTRAINT fk_rating_movie FOREIGN KEY (movie_id) REFERENCES movie(id) );字段类型上genres 字段用 VARCHAR 并以|分隔类型是课程设计里实用主义的选择因为类型参与相似度计算时只需split(|)就能转换成集合不需要再做关联表。avg_rating 用 DECIMAL(3,2) 而不是 FLOAT是为了避免浮点误差。rating 表用联合主键 (user_id, movie_id) 能天然挡住重复打分。这四张表建好之后Django 侧还需要在 models.py 里同步定义模型类再执行python manage.py makemigrations和python manage.py migrate把表映射进数据库。注意顺序一定是先建 Django 模型再迁移如果用 Navicat 手动建了表Django 的 ORM 反而会认为迁移状态不一致。3. 推荐算法核心从相似度计算到双路召回3.1 余弦相似度为什么选它而不是欧氏距离电影评分数据是典型的高维稀疏数据。假设有 5000 部电影一个用户可能只评分过 80 部那么他的特征向量里 98% 的维度都是空的。欧氏距离在高维稀疏空间里会被这些全零维度严重干扰而余弦相似度只关注向量方向的夹角不受向量长度影响。换句话说一个用户只评了 5 部电影另一个用户评了 500 部电影只要他们评分过的电影风格分布接近余弦相似度依然能给出较高的相似值。import numpy as np def cosine_similarity(vec_a, vec_b): # vec_a 和 vec_b 是两个等长的稀疏评分向量 dot np.dot(vec_a, vec_b) norm_a np.linalg.norm(vec_a) norm_b np.linalg.norm(vec_b) if norm_a 0 or norm_b 0: return 0.0 return dot / (norm_a * norm_b)这段代码的逻辑很直白分子是两个向量的点积分母是两个向量模长的乘积。返回 0.0 的情况必须处理否则会有除零警告。上一个项目中我就遇到过这种情况——冷启动的空白用户向量直接导致训练过程报错。3.2 基于内容的推荐从类型和导演找“同款”基于内容的推荐适合第一版演示因为它可解释性极强用户看过《星际穿越》系统推荐《火星救援》理由是类型都是科幻 冒险。实现思路是把电影转成特征文本类型、导演、演员拼成一个字符串再用 TF-IDF 或简单的集合交集去计算两部电影的内容相似度。def content_based_recommend(movie_id, movie_df, top_n10): target movie_df.loc[movie_id] # 用类型集合的交集大小作为粗略相似度 target_genres set(target[genres].split(|)) similarity_list [] for idx, row in movie_df.iterrows(): if idx movie_id: continue genres set(row[genres].split(|)) # 交集越大越相似同时微弱加权评分 score len(target_genres genres) * 0.7 row[avg_rating] * 0.01 similarity_list.append((idx, score)) similarity_list.sort(keylambda x: x[1], reverseTrue) return [movie_id for movie_id, _ in similarity_list[:top_n]]这里我故意把交集大小作为主权重评分只做 0.01 的微弱加权是因为内容推荐不应该被评分绑架。一个 9.2 分的文艺片和一个 8.9 分的科幻片相比用户当前场景想看的是“同款类型”而不是“绝对高分”。top_n 参数决定推荐列表长度10 在网页端比较合适5 适合手机端展示。内容推荐的最大问题是多样性差用户看多了会觉得“推荐来推荐去都是这些”所以实战中它通常只作为一路召回不单独作为最终结果。3.3 协同过滤找到口味相同的人基于用户的协同过滤是这类型项目里的点睛环节。核心步骤是三步构建用户—物品评分矩阵计算用户之间相似度找到邻居用户已评分且目标用户未接触的电影作为候选推荐。from scipy.sparse import csr_matrix def user_based_recommend(user_rating_matrix, target_user_id, k10, top_n10): # 每一行是一个用户每一列是一部电影值是评分 similar_users [] target_vector user_rating_matrix[target_user_id].toarray().flatten() for other_user_id in range(user_rating_matrix.shape[0]): if other_user_id target_user_id: continue other_vector user_rating_matrix[other_user_id].toarray().flatten() sim cosine_similarity(target_vector, other_vector) similar_users.append((other_user_id, sim)) similar_users.sort(keylambda x: x[1], reverseTrue) neighbors [uid for uid, sim in similar_users[:k] if sim 0.1] # 聚合邻居的评分排除用户已看过的电影 recommend_scores {} for neighbor_id in neighbors: neighbor_ratings user_rating_matrix[neighbor_id].toarray().flatten() for movie_idx, score in enumerate(neighbor_ratings): if score 0 and user_rating_matrix[target_user_id, movie_idx] 0: recommend_scores[movie_idx] recommend_scores.get(movie_idx, 0) score ranked sorted(recommend_scores.items(), keylambda x: x[1], reverseTrue) return [movie_idx for movie_idx, _ in ranked[:top_n]]这段代码有几个参数需要解释。k 控制邻居数量10 是经验值数据集小的话可以压到 5sim 0.1 的阈值是过滤弱相关用户的闸门防止噪声邻居污染推荐结果聚合时直接累加邻居评分是最简单的评分预测严格来说还应该除以邻居权重总和做归一化。矩阵用csr_matrix稀疏格式存储5000 部电影 × 3000 用户的矩阵在内存占用上这是近乎必须的选择。4. 把推荐跑起来Django 工程启动与页面操作4.1 环境准备Python 版本、依赖与虚拟环境这个阶段是新手最容易卡住的地方也是搜“python安装教程”的痛点来源。项目虽然是 Django 驱动但算法部分依赖 numpy 和 pandas数据库驱动至少需要 pymysql 或 mysqlclient 其中一个。我建议先用虚拟环境隔离避免和本机其他 Python 项目的包版本互相干扰。python -m venv venv source venv/bin/activate # Windows 下是 venv\Scripts\activate pip install django numpy pandas pymysql requests beautifulsoup4提示如果机器上同时存在 Python 2 和 Python 3务必用python3 -m venv venv指定版本否则可能建出一个基于 Python 2 的虚拟环境随后 pip 安装的 Django 版本会不兼容。安装完成后马上验证三个核心包能不能正常导入这一步能提前暴露 90% 的环境问题。很多同学反映“Django 界面能打开但是算法接口 500 错误”通常就是 numpy 版本不一致或者 pandas 装失败。4.2 数据库配置与数据初始化在 settings.py 里把默认的 SQLite 改成 MySQL 是常规操作但要注意字符集设置。电影标题里常见中文和特殊符号utf8mb4 是最稳妥的选择。DATABASES { default: { ENGINE: django.db.backends.mysql, NAME: movie_recommender, USER: root, PASSWORD: 你的数据库密码, HOST: 127.0.0.1, PORT: 3306, OPTIONS: { charset: utf8mb4 } } }代码里最容易被忽略的是OPTIONS里的 charset 配置。如果你用默认 utf8遇到片名里的生僻字或 emoji 符号会出现Incorrect string value报错。这里的连接方式也决定了一个常见坑pymysql 需要在项目__init__.py中执行一段兼容声明否则 Django 会找不到 MySQLdb 模块。一般在__init__.py里写import pymysql; pymysql.install_as_MySQLdb()就能解决。初始化顺序不要搞反先建库再迁移最后跑爬虫或导入数据集。我曾经先跑迁移再建库结果 Django 报Unknown database原因很简单——迁移脚本自己不会帮你创建空数据库。mysql -uroot -p -e CREATE DATABASE movie_recommender DEFAULT CHARACTER SET utf8mb4; python manage.py makemigrations python manage.py migrate python movie_recommender.py --fetch-pages 3最后一行是调用爬虫脚本的示意命令--fetch-pages 3表示只准备 3 页数据用于演示全量爬取时要根据目标网站的反爬力度调整。4.3 启动 Web 服务与验证推荐接口数据入库之后启动 Django 开发服务器看效果。如果发现样式错乱第一排查顺序是浏览器控制台 404 静态文件请求 → settings.py 的 STATICFILES_DIRS → 模板里{% static %}标签拼出的资源路径。python manage.py runserver 0.0.0.0:8000 curl http://127.0.0.1:8000/recommend/?user_id1top_n10返回的 JSON 里应该有电影标题、推荐理由、相似度分数三个字段。为什么用 GET 而不是 POST因为演示阶段我们希望直接在浏览器地址栏输入即可看到推荐结果方便答辩。实际工程中推荐接口必须改成 POST 并加权限校验否则任何人都能通过遍历 user_id 获取所有用户的观影偏好属于严重的越权漏洞。5. 避坑指南推荐系统项目的常见问题与排查5.1 CSS 样式全部失效现象页面内容正常显示但所有按钮、海报、布局都是裸露的 HTML没有颜色和排版。浏览器 F12 控制台显示大量404请求指向/static/css/...。原因settings.py 里STATIC_URL和项目实际目录不匹配或者 templates 中的静态资源路径写成了绝对路径。解决确认项目根目录存在 static 文件夹然后编辑 settings.py 补上STATICFILES_DIRS [BASE_DIR / static]。注意 Django 4.x 的路径写法需要用BASE_DIR / static而不是拼接字符串。5.2 中文乱码或写入数据库报错现象启动爬虫后终端输出的电影标题显示为????????或者 MySQL 报Incorrect string value: \xE7\x94\xB5...。原因数据库表或连接字符集不是 utf8mb4。解决检查三个位置——建库语句的DEFAULT CHARACTER SET utf8mb4、settings.py 的 OPTIONS 中 charset 值、以及 MySQL 配置文件 my.ini 中的character-set-serverutf8mb4。修改之后需要重启 MySQL 服务只改 Django 端不重启数据库服务等于白改。5.3 相似度计算结果全是零现象推荐列表为空调试发现所有用户或电影的余弦相似度都是 0.0。原因评分矩阵构建时索引错位导致向量之间完全无交集或者输入向量没有正确归一化。解决打印形状确认矩阵维度检查 movie_id 是不是从 0 连续索引因为稀疏矩阵不接受非连续索引。我在第一次实验里直接把数据库自增 id 当成矩阵列索引而自增 id 从 1 开始、有删除空洞最后矩阵形状校验直接崩掉。5.4 导入 zip 后提示缺少模块现象pip 安装依赖后运行仍报No module named MySQLdb或No module named bs4。原因pymysql 没有注册为 MySQLdb 替身或依赖装进了错误的 Python 环境。解决在项目__init__.py中注入pymysql.install_as_MySQLdb()再执行pip list检查包所在环境和which python确认解释器路径是否一致。很多时候是因为开了一个新的终端窗口激活虚拟环境的命令被重置了。5.5 推荐结果永远是热门的几部电影现象无论 user_id 怎么换推荐列表都是库里评分最高的那几部个性化几乎为零。原因协同过滤的邻居列表中有效邻居太少最终聚合分数被一两个高分用户主导。解决检查该用户的历史评分数量少于 5 条时建议走内容推荐或热门榜兜底不要在协同过滤上硬撑同时把sim 0.1的阈值提高到 0.25过滤弱相关邻居。6. 冷启动处理与推荐效果离线验证冷启动是推荐系统的老大难也是答辩时最容易露怯的提问点。新注册用户没有任何评分行为协同过滤直接无解。我在这类项目里的处理方式是做一个三级兜底策略首先用全站热门 Top20 填充保证页面不为空其次在详情页埋几个“相似电影”位走基于内容的推荐最后等用户产生至少 5 条评分后再切换为协同过滤主推。这套策略代码加在视图层而不在算法里改动最轻。离线验证部分很多同学的实验报告里写“准确率 90%”我建议你动手做一次拆分验证这个数据才有说服力。常规做法是把评分记录按 8:2 分为训练集和测试集只让算法看到训练集然后统计推荐列表命中测试集的比例。from sklearn.model_selection import train_test_split # 假设 data 是 DataFrame包含 user_id, movie_id, score 三列 train_data, test_data train_test_split(data, test_size0.2, random_state42) def precision_at_k(train, test, k10): hits 0 test_users test[user_id].unique() for uid in test_users: rec_list user_based_recommend(train, uid, kk) actual set(test[test[user_id] uid][movie_id]) hits len(set(rec_list) actual) return hits / (len(test_users) * k) print(fPrecision10 {precision_at_k(train_data, test_data):.3f})验证时要特别注意两个边界random_state 固定这样实验可以复现如果测试用户召回不到 k 部电影分母直接按 k 算会略微低估精确率更严格的口径是只统计至少有一条推荐结果的用户。整个项目跑顺之后我最深的使用感受是“脏数据是大敌参数是配角”——只要把爬虫清洗和入库这条链路管严推荐结果不会差到哪去一旦数据乱再调相似度阈值都是白费功夫。后来我每次拿到新的推荐系统项目都会强制要求自己先花一半时间摸数据形态再让推荐代码碰数据。这个方法在这个电影推荐系统的好几次修改里都帮了大忙。希望你下载复现的时候也能把前半段的数据链路当成重点这会少走很多弯路希望帮到你。本文还有配套的精品资源点击获取

相关新闻

深度学习医疗诊断系统Python源码实战:从模型训练到可解释输出

深度学习医疗诊断系统Python源码实战:从模型训练到可解释输出

简介:这份基于深度学习的医疗诊断系统Python源码,面向医疗AI开发者、深度学习初学者及相关课题研究者,可直接用于搭建医疗影像分类、病历数据分析等诊断辅助流程。资源包共48个文件,压缩后大小4.44MB,以13个Python源文…

2026/10/13 17:28:28 阅读更多 →
RT-DETR 部署实战:ONNXRuntime C++ 与 Python 推理全流程

RT-DETR 部署实战:ONNXRuntime C++ 与 Python 推理全流程

简介:本资源面向算法部署工程师与目标检测方向学习者,聚焦如何用C和Python结合ONNXRuntime部署RT-DETR实时目标检测模型,解决从PyTorch模型到跨平台高效推理的落地问题。压缩包共12个文件,约150.47MB,包含onnx模型权重…

2026/10/13 18:03:20 阅读更多 →
深度强化学习交易策略从零搭建:环境、特征与PPO实战

深度强化学习交易策略从零搭建:环境、特征与PPO实战

简介:基于深度强化学习的自动化股票交易策略设计源码整合了PPO、A2C、DDPG三种Actor-critic算法,面向金融量化研究者与深度强化学习入门者,提供从数据预处理到策略回测的闭环方案,适用于股票自动交易策略的算法验证与二次开发。压…

2026/10/13 18:04:42 阅读更多 →

最新新闻

纯Python实现猜数字游戏:从零到避坑的完整指南

纯Python实现猜数字游戏:从零到避坑的完整指南

猜数字游戏大概是很多人的第一个编程项目。它不像计算器那样枯燥,也不需要复杂的界面,但一套完整流程走下来,变量、输入输出、条件判断、循环、异常处理这些编程入门核心概念全部能练到。我最近又把这个小项目从头写了一遍,用最基…

2026/10/14 6:39:29 阅读更多 →
Vibe Coding工具链选型四步框架:效率提升27%与成本控制24倍

Vibe Coding工具链选型四步框架:效率提升27%与成本控制24倍

1. 效率提升27%背后的真实账本先把结论摆出来:同样一个中等复杂度的业务模块,用对工具链和用错工具链,交付效率差距能拉到27%左右,而综合成本差距可以到24倍。这个数字不是拍脑袋来的,是我在三个不同类型的项目里反复测…

2026/10/14 6:39:29 阅读更多 →
两个模型同价,真正拉开成本的是那个默认值

两个模型同价,真正拉开成本的是那个默认值

📋 目录 一、两个模型,一个价二、纠错一:跑量模型不等于更便宜三、纠错二:贵的是 quality,而且它默认不贵四、逐档成本表,和一个反直觉的发现五、纠错三:分辨率不是按像素收费六、参考图才是隐…

2026/10/14 6:39:29 阅读更多 →
Vibe Coding工具选型与四步实施框架:效率提升27%与成本差24倍背后的工程实践

Vibe Coding工具选型与四步实施框架:效率提升27%与成本差24倍背后的工程实践

1. 效率数字背后的真实账本先把标题里两个数字拆开看。效率提升27%这个量级,放在任何研发团队里都算得上可观,但它不是凭空冒出来的——它通常来自编码环节中重复劳动被压缩、上下文切换次数减少、以及试错周期缩短这三块的叠加。而成本差24倍这个说法&a…

2026/10/14 6:39:29 阅读更多 →
新手入门3D视觉(一)WSL2+Ubuntu22.04+PCL环境配置

新手入门3D视觉(一)WSL2+Ubuntu22.04+PCL环境配置

「零基础转行工业 3D 视觉」系列第一篇。 本文记录我用 WorkBuddy 把第 1 周环境搭起来的完整过程:3 个步骤,手动敲的命令不超过 3 条。 全程用到的 3 个脚本放在文末附件里,可以直接下载复用。开始之前:一条最重要的提醒不要装 V…

2026/10/14 6:39:29 阅读更多 →
深度学习损失函数选型实战:从MSE到Focal Loss的原理与踩坑

深度学习损失函数选型实战:从MSE到Focal Loss的原理与踩坑

损失函数这玩意儿,说起来是深度学习里最基础的组件之一,但恰恰是很多同学在实战里翻车最频繁的地方。我带项目的时候经常看到有人模型结构抄得挺像样,学习率调度也配了一堆,可训练出来的结果就是不对,Loss 曲线跟心电图…

2026/10/14 6:38:29 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →