当前位置: 首页 > article >正文

基于Chrome140的VK账号自动化(关键词浏览)——脚本撰写(二)

引言在上一篇文章《基于Chrome140的VK账号自动化关键词浏览——需求分析环境搭建一》中我们完成了开发环境的准备工作包括Python环境配置、uv包管理器安装、Playwright框架部署以及Chrome浏览器的配置。现在我们将进入核心开发阶段基于RPA框架构建VK自动化浏览系统。本文将详细介绍如何使用基于动作执行器action_executor的RPA框架实现VK的智能浏览、交互和状态管理。通过状态机模式和权重化随机动作系统我们将构建一个既自然又高效的自动化解决方案。本教程将展示业务核心内容代码框架部分将不作为展示。1. RPA框架架构设计核心框架结构基于您提供的代码我们的VK自动化系统采用了成熟的RPA框架设计具有以下核心特性from stubs.rpa import * from functools import partial from typing import Tuple import random import time # 核心组件说明 # - CoreBrowsePage: 浏览器页面基类 # - CorePageObject: 页面对象基类 # - action_exector: 动作执行器装饰器 # - start_main_page_process: 主流程启动器1.1 状态机设计模式系统采用状态机模式管理不同的页面状态每个状态对应特定的动作集合home状态VK首页浏览detail状态帖子详情页交互unknown状态异常状态处理2. 核心动作系统2.1智能滚动动作滚动是模拟真实用户浏览行为的基础动作我们实现了支持随机距离、持续时间和方向的智能滚动系统。action_exector def scroll_action(page: CoreBrowsePage, distance: Tuple[int, int], duration: Tuple[float, float], scroll_down_probability: int): 滚动动作 :param distance: 滚动距离的范围是一个元组如(100, 200) :param duration: 滚动持续时间的范围是一个元组如(0.1, 1.0) :param scroll_down_probability: 向下滚动的概率0-100之间的整数 :param page: 页面对象 pass page.ui_logger.log(fScrolling the page with a random distance between {distance[0]} and {distance[1]} pixels, ) _distance random.randint(*distance) _duration random.uniform(*duration) if random.randint(0, 100) scroll_down_probability: # 向上滚动 _distance -_distance smooth_scroll(page.page, _distance, _duration)2.2 停留动作模拟停留动作模拟用户阅读和思考的时间是增强真实性的重要组件action_exector def stay_action(page: CoreBrowsePage, stay_time: Tuple[int, int]): 用户停留动作模拟器 模拟真实用户在浏览过程中的阅读、思考停顿时间 Args: page: 浏览器页面对象 stay_time: 停留时间范围 (min_seconds, max_seconds) # 随机生成停留时间 _stay_duration random.uniform(*stay_time) page.logger.info(f用户停留思考: {_stay_duration:.2f}秒) # 执行等待 time.sleep(_stay_duration) # 如果需要截图可以添加截图记录执行 page.save_html_and_screenshot() # 保存html内容和截图 page.logger.info(停留结束继续浏览)3. 内容交互系统3.1智能帖子选择与点击内容交互是VK自动化的核心功能我们实现了智能的帖子识别和点击系统action_exector def detail_action(page: CorePageObject): pass _article_locators page.page.locator(ytd-video-renderer) _selected_article None for _article_locator in _article_locators.all(): if element_in_viewport(page.page, _article_locator) and _article_locator.is_enabled(): _selected_article _article_locator break if not _selected_article: page.logger.info(not found article in viewport) return page.logger.info(fclick article position: {_selected_article.bounding_box()}) _article_title_locator _selected_article if _article_title_locator.count() 0: page.logger.info(fclick article title {_article_title_locator.first.text_content()}) simulate_mouse_click(page.page, _article_title_locator.first)3.2 返回导航动作返回动作确保用户能够从详情页回到主页面继续浏览action_exector def back_action(page: CorePageObject): pass page.page.go_back()4. VK关键词搜索页面控制器4.1 VKSearchBrowsePage核心类VK关键词搜索页面类是整个系统的核心控制器管理页面状态、动作权重和异常处理class VKSearchBrowsePage(CoreBrowsePage): VK关键词搜索自动化浏览页面控制器 property def url(self): return fhttps://www.vk.com/results?search_query{self.search_text} if self.search_text else https://www.vk.com/ property def search_text(self): 搜索关键词获取器 从代理变量中获取搜索关键词配置 支持动态配置不同的搜索关键词 Returns: str: 搜索关键词文本 return self.proxy.use(${search_text}, VariableValue).value() property def random_actions(self): 状态化随机动作配置系统 根据当前页面状态返回对应的动作权重配置 每个动作都有对应的权重值系统会根据权重随机选择执行 property def random_actions(self): return { home: [ (self.scroll_weight, partial(scroll_action, distanceself.scroll_distance, durationself.scroll_time, scroll_down_probabilityself.scroll_down_probability)), (self.stay_weight, partial(stay_action, stay_timeself.home_stay_time)), (self.view_detail_weight, partial(detail_action)), ], detail: [ (self.scroll_weight, partial(scroll_action, distanceself.scroll_distance, durationself.scroll_time, scroll_down_probabilityself.scroll_down_probability)), (self.stay_weight, partial(stay_action, stay_timeself.home_stay_time)), (self.go_back_weight, partial(back_action)), ], }4.1 登录状态检测def is_login(self): 检查是否登录 :return: try: self.page.wait_for_selector(.post_info, timeout10000) self.ui_logger.log(Logged in successfully.) except TimeoutError: self.ui_logger.log(Login required., warning) return False return True4.2 页面状态识别def get_current_state(self): _current_page_url self.page.url self.logger.info(fcurrent page url: {_current_page_url}) # https://www.vk.com/results?search_queryClonBrowsertypeposts if _current_page_url.startswith(https://www.vk.com/results): return home if https://www.results.com/watch in _current_page_url: return detail return unknown5. 系统启动与配置5.1主流程启动配置系统启动使用框架提供的start_main_page_process函数支持重试机制和超时控制# 系统主流程启动 start_main_page_process( self, # 页面实例 VKSearchBrowsePage, # VK页面控制器类 retry1, # 失败重试次数 timeout60000 # 超时时间毫秒 )5.2 配置参数说明VK自动化系统的行为通过以下权重参数进行调控# 动作权重配置示例 class VKSearchBrowsePage(CoreBrowsePage): def __init__(self): super().__init__() # 滚动相关配置 self.scroll_weight 40 # 滚动动作权重 self.scroll_distance (200, 600) # 滚动距离范围(像素) self.scroll_time (0.5, 2.0) # 滚动持续时间(秒) self.scroll_down_probability 80 # 向下滚动概率(%) # 停留相关配置 self.stay_weight 30 # 停留动作权重 self.home_stay_time (3, 8) # 主页停留时间范围(秒) # 交互相关配置 self.view_detail_weight 20 # 查看详情权重 self.go_back_weight 80 # 返回操作权重6.额外说明6.1框架依赖说明本系统基于成熟的RPA框架构建主要依赖组件包括# 核心依赖模块 from stubs.rpa import ( CoreBrowsePage, # 浏览器页面基类 CorePageObject, # 页面对象基类 action_exector, # 动作执行器装饰器 smooth_scroll, # 平滑滚动函数 element_in_viewport, # 视口检测函数 simulate_mouse_click, # 鼠标点击模拟 start_main_page_process # 主流程启动器 )6.2最佳实践建议权重调优根据实际需求调整各动作的权重比例时间控制合理设置停留时间和滚动持续时间异常处理完善check_exception_handler方法的异常检测逻辑日志记录充分利用页面对象的logger进行调试和监控状态管理根据业务需求扩展更多的页面状态结语本文详细介绍了基于RPA框架的VK自动化浏览系统实现方案。通过动作执行器模式、状态机管理和权重化随机动作系统我们构建了一个功能完整、行为自然的自动化解决方案。核心技术特点基于装饰器的动作执行器模式代码结构清晰状态机管理不同页面的行为策略权重化随机动作系统模拟真实用户行为智能内容识别和交互机制完善的异常检测和处理框架系统优势高度模块化的设计易于扩展和维护基于成熟RPA框架稳定性有保障智能的页面状态识别和动作选择丰富的配置参数适应不同使用场景通过本文的学习您已经掌握了VK自动化系统的核心开发技术。在下一篇文章《基于Chrome140的VK账号自动化关键词浏览——运行脚本三》中我们将重点介绍系统的部署运行、监控管理和性能优化帮助您将开发完成的自动化脚本投入实际应用。

相关文章:

基于Chrome140的VK账号自动化(关键词浏览)——脚本撰写(二)

引言在上一篇文章《基于Chrome140的VK账号自动化(关键词浏览)——需求分析&环境搭建(一)》中,我们完成了开发环境的准备工作,包括Python环境配置、uv包管理器安装、Playwright框架部署以及Chrome浏览器…...

中小团队低成本搭业务系统?推荐五款免费低代码平台

最近在帮团队找低代码平台,希望能自己搭一些内部系统,比如审批流程、数据管理、简单业务应用等。试了几款之后发现,现在的低代码工具已经很成熟,不写代码也能做出完整系统。整理了5款免费阶段就很好用的平台,分享给大家…...

基于深度强化学习的混合动力汽车能量管理策略:利用DQN算法控制电池与发动机发电机组功率分配

基于深度强化学习的混合动力汽车能量管理策略 1.利用DQN算法控制电池和发动机发电机组的功率分配 2.状态量为需求功率和SOC,控制量为EGS功率 3.奖励函数设置为等效油耗和SOC维持混动车车主们肯定遇到过这种情况:踩下油门时总在纠结该让电池出力还是发动机…...

第五章 C# Event(事件)完全解析:从基础到实战的发布 - 订阅模式

C# Event(事件)完全解析:从基础到实战的发布 - 订阅模式 事件(Event)是 C# 实现发布 - 订阅(Publish-Subscribe)模式的核心机制,作为委托(Delegate)的封装与约…...

SpringBoot+Lombok+Logback实现日志

LombokLogback实现日志功能一、Lombok 详解Lombok 是一款 Java 开发工具库,核心目标是通过注解简化 Java 类的模板代码(如 getter/setter、构造方法、日志对象等),减少冗余代码,提升开发效率。它的原理是在编译阶段&am…...

Try ollama

安装ollama (下面的命令要先设置proxy)Ollama 是一个在本地运行大语言模型(LLM)的工具。 curl -fsSL https://ollama.com/install.sh | sh给ollama设置代理,然后重启ollama [roothp17-lab33-masterbm-1 ~ (Backup)]# sudo syst…...

降低Oracle数据库的表空间使用率

一.先查看表空间使用率 -- 查看表空间和对应物理文件名 select b.file_id 物理文件号, b.file_name 物理文件名, b.tablespace_name 表空间, b.bytes/1024/1024 大小M, (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M, substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*…...

基于matlab的弱肉强食问题 - Volterra模型

- 标题: 基于matlab的弱肉强食问题-Volterra模型 - 关键词:matlab GUI界面 静态仿真 动态仿真 三种群仿真 - 步骤:仿真主界面中,有仿真参数的输入以及仿真对象以及仿真模式等的选择,设置好所有的参数后,点击…...

20.国产构建工具之王xmake——单元测试(test)

目录 一、引言 二、正文 1. xmake中如何在目标中加入单元测试 2. xmake test的参数和作用 3. 补充知识——单元测试的意义和常用框架 (1)单元测试的核心意义 (2)xmake支持的常用单元测试框架 三、结语 写在前面 所有内容首发都将在公众号【飞翔的SA】,也请大家移…...

苹果 MacBook Neo:低价入局,模块化维修开启新战局

MacBook Neo:低价敲门砖进军大众市场苹果推出的 MacBook Neo 以 599 美元的起售价,正式进军售价低于 1000 美元的笔记本电脑市场。这一价格定位,使其直接对标中端 Windows 笔记本电脑和 Chromebook。与苹果以往注重高端性能的产品不同&#x…...

2026年婚礼邀请函制作复盘:从关键词搜索到版式细节调整

作为一名运营,我平时主要跟项目进度和数据打交道,设计基本是我的知识盲区。但上周,我最好的朋友十万火急地找到我,她的婚期定了,但电子邀请函还没着落,希望下周末前就能发给亲友。她自己试了几个小程序&…...

linux内核高端内存映射-kmap/kunmap

动态映射高端内存页面,在32位系统中,物理内存分为低端内存(Low Memory,直接映射区)和高端内存(High Memory,动态映射区)。低端内存可通过固定偏移(PAGE_OFFSET)直接映射到内核虚拟地址空间,而高端内存(超出直接映射范围的物理内存)需通过 kmap动态分配虚拟地址并建立映射,供内核…...

大数据开发面试必背:Oracle vs MySQL 核心差异

大数据开发面试必背:Oracle vs MySQL 核心差异(全维度对比实战示例) Oracle和MySQL是大数据开发/数仓面试中最常对比的两大数据库,本文从数据类型、语法、函数、事务、性能等核心维度,结合表格对比代码示例图形化逻辑&…...

文件操作(三)

一、fgetc函数1.1.函数原型:int fgetc ( FILE * stream );1.2.函数功能从流中获取字符,字符输入函数。返回指定流的内部文件位置指示器当前指向的字符。然后,内部文件位置指示器将前进到下一个字符。1.3.示例如下1.3.1.读文件代码如下&#x…...

期货软件开发 - 交易登录

C# WinForm 登录窗体代码,包括核心功能、关键逻辑,让你能清晰理解每一部分的作用。一、代码整体功能总结这段代码实现了一个期货交易系统的登录窗体(FrmLogin),核心功能包括:版本校验与自动更新账号密码登录…...

实测整理|免费编程体验课汇总(附获取方式)

作为深耕教育领域的博主,最近后台被问爆的问题就是:“想入门编程,有没有免费体验课?”“怕踩坑不想盲目报课,先试试水可行?”其实不管是零基础想入门的新手、想转行的职场人,还是想培养孩子逻辑…...

实战案例三:Claude Code + PDF 技能解析文档数据

PDF 文档是商业环境中常见的数据载体,从合同到报告,从发票到简历,大量有价值的信息存储在 PDF 中。本案例将展示如何利用 Claude Code 的 PDF 技能,高效提取和处理 PDF 文档中的数据。 场景描述 假设你是一家电商公司的运营人员,每周都会收到一份销售报告 PDF,包含各地…...

COMSOL激光超声仿真:板状材料中激光激发超声波的数值模拟

COMSOL激光超声仿真:板状材料中激光激发超声波的数值模拟 版本为5.6,低于5.6的版本打不开此模型在材料科学与无损检测等领域,激光超声技术因其独特优势备受关注。借助COMSOL软件,我们能够对板状材料中激光激发超声波的过程进行精确数值模拟。…...

终于等来了!OpenCowork 原生支持Mac啦,AI协作工具党狂喜

哈喽各位爱折腾AI工具的小伙伴们!好久没给大家安利实用的开源工具了,今天这款我亲测用了快两周,真的太香了必须分享给你们👇 它就是由国内AIDotNet团队开发的跨平台AI协作桌面工具——OpenCowork,简单来说就是你可以把…...

SSH免密登录配置指南

每次 SSH 登录都要输入密码,确实很影响效率。解决这个问题的核心方法,就是配置SSH密钥认证。简单来说,就是让你的电脑(客户端)和远程服务器(服务端)通过一对“钥匙”来互相确认身份,…...

CentOS7 部署 FastDFS 5.11 + Nginx 1.14 文件服务器(完整实践)

文章目录CentOS7 部署 FastDFS Nginx 文件服务器(完整实践)一、FastDFS 简介二、实验环境三、软件版本四、安装包下载五、环境准备六、安装 libfastcommon七、安装 FastDFS八、配置 FastDFS九、配置 Tracker十、配置 Storage十一、配置 Client十二、启动…...

小程序开发部署流程完整指南

小程序开发部署流程完整指南 本文详细介绍微信小程序从本地开发、构建、上传到正式发布的完整部署流程,以 Taro React 技术栈为例。 一、小程序部署的本质 小程序与公众号不同:前端代码运行在微信提供的沙箱环境中,代码需上传到微信服务器&…...

深度解读谷歌地图Gemini整合:从技术架构看AI如何重构LBS应用

【导语】2026年3月,谷歌地图宣布整合Gemini模型,推出对话式搜索Ask Maps和沉浸式导航。这不仅是产品功能的升级,更是LBS(基于位置的服务)应用与AI大模型深度融合的标志性事件。 自然语言理解如何实现从关键词到复杂意图…...

OpenClaw深度解析:开源AI数字员工如何实现7x24小时运行?小白程序员必看!收藏版

本文深入拆解了OpenClaw开源AI项目的火爆原因,核心在于其独特的架构设计,包括Agent Loop决策、Tools工具集和Gateway持续在线模块,实现了AI的7x24小时运行。文章强调开源带来的信任、生态和分发优势,对比Claude Code,指…...

别再瞎折腾了!这些Web渗透靶场让你从菜鸟变大神

最近有朋友问我,想学Web渗透测试但不知道从哪里下手,网上的教程看了一堆,理论倒是懂了不少,可一到实际操作就抓瞎。说实话,这种情况我见得太多了,就像学游泳一样,光看视频是永远学不会的&#x…...

磁盘参数错误恢复实战:零基础用户也能掌握的4步操作法

在数字化存储时代,磁盘参数错误如同潜伏在数据世界中的“隐形杀手”,它可能让重要文件瞬间消失、系统无法识别存储设备,甚至引发企业级存储阵列的瘫痪。无论是个人用户保存的珍贵照片,还是企业数据库中的核心数据,都可…...

高效处理报销票与发票:批量合并打印实战经验

在企业日常财务管理中,报销票据和各类发票的打印与整理是一项高频且繁琐的任务。尤其是在大型公司或物业、法律、人事等部门,每个月都可能产生上百份票据。 传统方式通常是手动下载、逐个打印,不仅耗时,而且容易出错。如何快速、…...

Reddit 发布关于B2B营销机会的报告

知名社交新闻论坛Reddit近日发布了一份新报告,着重探讨了在其平台进行B2B(企业对企业)营销的潜力与机会。尽管Reddit传统上并非B2B营销的首选平台,但报告指出,其平台上深入、专业的社区讨论实际上能显著影响企业的采购…...

OpenClaw安全风险持续发酵:官方预警升级,多所高校紧急部署防控措施

开源AI智能体OpenClaw(俗称“龙虾”)掀起全网使用热潮后,其安全隐患引发监管部门高度关注。工信部等相关部门明确提示,在默认配置或不当使用情况下,该工具极易引发网络攻击、信息泄露等安全问题,及时为“龙…...

作为一名市场运营,我的“养虾”初体验:上手JiuwenClaw,让AI智能体真的“越用越懂我”

一、前言最近,AI Agent(智能体)的概念非常火,但很多产品要么部署复杂,要么用起来像个死板的“工具人”。作为一名市场运营,在看到openJiuwen社区发布了基于Python开发的“小龙虾” JiuwenClaw,并…...