You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
from xhs import XhsClient import time from typing importList from config import XHS_CONFIG, WECOM_CONFIG, MONITOR_CONFIG from utils import xhs_sign from db import Database from wecom import WecomMessage
追女神必备!使用 Python 构建小红书用户动态监控系统
https://ift.tt/2GYRUqu
前言
“今天她又发新笔记了吗?”
“糟了,她更新了我却没能第一时间看到…”
“为什么别人都能秒回评论,我却总是来晚一步…”
“为什么我总是错过她的新动态…”
相信很多同学都有过这样的经历。作为一名资深舔狗,一直秉承着 “舔得狗中狗,方为人上人” 的原则,必须 24 小时待命,不能错过女神的任何动态,但同时作为一名资深软件工程师,与其整天盯着手机刷新,不如用技术来解决这个问题!
今天,我们就来构建一个专属得“女神小红书动态监控系统”,让你永远不错过她的每一条动态,永远第一时间向她嘘寒问暖,做她最忠实的粉丝(舔狗)!
需求分析
作为一名合格的舔狗,我们需要:
通过这个项目,你将获得:
技术方案
为了实现这个浪漫的需求,我们需要:
确定好大致技术方案后,就让我们开始这段浪漫的编程之旅吧!
创建项目
首先让我们创建一个新的项目目录并进入该目录,然后创建一个虚拟环境,并安装所需的依赖库。
核心代码实现
实现配置模块
创建 config.py 文件, 用来配置小红书,企业微信通知以及监控相关的可配置信息。
实现企业微信通知模块
创建 wecom.py 文件, 用来实现企业微信通知功能。
WecomMessage
类, 用来实现企业微信通知功能。WecomMessage
类的__init__
方法的参数。get_access_token
方法来获取。send_text
方法来发送文本消息。实现数据库模块
创建 db.py 文件, 用来实现数据库相关功能。
Database
类, 用来实现数据库相关功能。init_db
方法来初始化数据库表, 如果 notes 数据库表不存在, 则创建它。add_note_if_not_exists
方法来添加笔记记录。如果笔记已存在, 则返回 False, 否则将笔记插入到数据库表并返回 True实现工具模块
创建 utils.py 文件, 用来实现程序所需的工具函数。
xhs_sign
方法,用来生成小红书请求的签名。实现监控主程序
创建 monitor.py 文件, 用来实现监控主程序。
main
函数,用来启动监控。main
函数中我们通过XHSMonitor
类来初始化监控对象,并传入配置模块中的小红书 cookie, 企业微信配置信息以及监控配置信息。monitor_user
方法来监控女神的最新笔记。XHSMonitor
类中我们一共需要实现 5 个方法, 分别是:__init__
方法send_error_notification
方法send_note_notification
方法get_latest_notes
方法monitor_user
方法XHSMonitor 类详解
__init__
方法__init__
方法用来初始化监控对象的属性, 我们需要在这个方法中初始化xhsClient
对象,wecomMessage
对象以及database
对象,并赋值给监控对象对应的属性。同时,我们还需要初始化一个错误计数器,用来记录 API 请求失败的次数。其中在初始化
xhsClient
对象时,我们传入了 cookie 和 sign 参数。cookie 是我们在配置模块中配置的小红书 cookie,sign 则是我们在 utils 模块中实现的xhs_sign
方法, 用来生成小红书请求的签名。get_latest_notes
方法get_latest_notes
方法的主要功能是获取女神的最新笔记。内部通过XhsClient
的get_user_notes
方法来获取小红书用户笔记。如果获取失败,则将错误信息记录到错误计数器中,如果错误计数器达到最大重试次数,则调用send_error_notification
方法发送错误通知并退出程序。当然,如果获取成功,则将错误计数器清零。由于大多数错误是触发了小红书的反爬虫机制,所以这里我们也会通过sleep
方法来等待一段时间,然后再重试。send_error_notification
方法send_error_notification
方法的主要功能是发送错误通知到企业微信。核心逻辑也很简单,就是将错误信息和当前时间拼接成一条文本消息,然后调用WecomMessage
的send_text
方法发送。monitor_user
方法monitor_user
方法用来监控女神的最新笔记。通过 while 循环不断调用get_latest_notes
方法获取女神的最新笔记,然后通过add_note_if_not_exists
方法判断笔记是否已存在,如果笔记不存在,则说明是新笔记,则调用send_note_notification
方法发送笔记通知到企业微信,告知我们女神发布了新笔记,我们就可以第一时间去点赞或者评论了。send_note_notification
方法send_note_notification
方法和send_error_notification
类似。将笔记的标题, 链接, 类型, 监控时间以及用户名拼接成一条文本消息,然后调用WecomMessage
的send_text
方法发送。运行监控程序
以上,我们的核心代码已经实现完毕,接下来我们就可以运行我们的监控程序,测试程序是否正常,行为是否符合预期。
在正式运行之前,我们需要先配置好小红书 cookie, 企业微信配置信息以及监控配置信息。
我们登录小红书 Web 端,打开开发者工具,在 Network 标签下找到请求头中包含 Cookie(a1, web_session 和 webId)的请求,复制请求头中的 Cookie 信息,然后粘贴到配置模块中的 XHS_CONFIG 中。
获取企业微信配置信息
登录企业微信后台,创建一个企业或者加入一个企业,获取企业的 CORPID,然后在应用管理中创建一个应用,获取应用的 AGENTID 和 SECRET,然后粘贴到配置模块中的 WECOM_CONFIG 中。
获取女神小红书用户 ID
通过小红书 Web 端,访问女神的笔记主页,浏览器地址栏 /user/profile/xxx 中的 xxx 就是小红书用户 ID。
本地运行
当完成以上配置后,本地运行很简单,只需要在终端中执行以下命令即可:
当终端输出 “开始监控用户: xxxxxxx” 时,说明监控程序已经启动成功,女神发布新笔记时,我们就会收到通知了。(注意:第一次启动时,由于数据库中没有数据,所以会发送很多通知,不用担心,这些通知都是女神之前的笔记,我们只需要持续运行监控,关注新笔记即可)
部署到云服务器
部署到云服务器,可以保证监控程序的持久运行。我们使用 screen 保持程序在后台持续运行。
结语
通过这篇教程,我们实现了一个女神小红书动态监控系统,让我们永远不错过她的每一条动态,永远第一时间向她嘘寒问暖,做她最忠实的粉丝(舔狗)! 但是,技术只是手段,真正的爱情需要我们用心去经营,希望各位同学都能追到自己的女神,并和她一起走向幸福的未来!
项目地址
https://github.com/beilunyang/xhs-monitor
via 悖论の小黑屋
January 16, 2025 at 10:04AM
The text was updated successfully, but these errors were encountered: