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

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

引言

在上一篇文章《基于Chrome140的Google自动化(关键词浏览)——需求分析&环境搭建(一)》中,我们完成了开发环境的准备工作,包括Python环境配置、uv包管理器安装、Playwright框架部署以及Chrome浏览器的配置。现在,我们将进入核心开发阶段,基于RPA框架构建Google自动化浏览系统。

本文将详细介绍如何使用基于动作执行器(action_executor)的RPA框架,实现Google的智能浏览、交互和状态管理。通过状态机模式和权重化随机动作系统,我们将构建一个既自然又高效的自动化解决方案。

本教程将展示业务核心内容代码,框架部分将不作为展示。

1. RPA框架架构设计

核心框架结构

基于您提供的代码,我们的Google自动化系统采用了成熟的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状态:Google首页浏览
  • 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(f"Scrolling the page with a random distance between {distance[0]} and {distance[1]} pixels, ") # 如果 滚动到页面底部, 则可以选择随机跳转任意一页 if page.page.url.startswith("https://www.google.com/search") and element_in_viewport(page.page, page.page.locator('[role="navigation"] table').first): page.ui_logger.log("is scrolling to the bottom of the page, and will randomly jump to another page.") # 随机点击一个分页链接 _pagination_links = page.page.locator('[role="navigation"] table td a') if _pagination_links.count() > 0: _random_index = random.randint(0, _pagination_links.count() - 1) page.ui_logger.log(f"click pagination link: {_pagination_links.nth(_random_index).text_content()}") simulate_mouse_click(page.page, _pagination_links.nth(_random_index)) page.page.wait_for_load_state() return _distance = random.randint(*distance) _duration = random.uniform(*duration) _scroll_locator = page.page.locator('body') 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智能帖子选择与点击

内容交互是Google自动化的核心功能,我们实现了智能的帖子识别和点击系统:

@action_exector def detail_action(page: CorePageObject): pass page.ui_logger.log("Viewing details of the current page.") _article_locators = page.page.locator('#search a') _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.ui_logger.log("not found article in viewport", "warning") return page.ui_logger.log(f"click article position: {_selected_article.bounding_box()}") _article_title_locator = _selected_article if _article_title_locator.count() > 0: page.logger.info(f"click article title {_article_title_locator.text_content()}") simulate_mouse_click(page.page, _article_title_locator)

3.2 返回导航动作

返回动作确保用户能够从详情页回到主页面继续浏览:

@action_exector def back_action(page: CorePageObject): pass page.ui_logger.log("Going back to the previous page.") page.page.go_back()

4. Google关键词搜索页面控制器

4.1 GoogleSearchBrowsePage核心类

Google关键词搜索页面类是整个系统的核心控制器,管理页面状态、动作权重和异常处理:

class GoogleSearchBrowsePage(CoreBrowsePage): """Google关键词搜索自动化浏览页面控制器""" @property def url(self): return f"https://www.google.com/search?q={self.search_text}" @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, distance=self.scroll_distance, duration=self.scroll_time, scroll_down_probability=self.scroll_down_probability)), (self.stay_weight, partial(stay_action, stay_time=self.home_stay_time)), (self.view_detail_weight, partial(detail_action)), ], "detail": [ (self.scroll_weight, partial(scroll_action, distance=self.scroll_distance, duration=self.scroll_time, scroll_down_probability=self.scroll_down_probability)), (self.stay_weight, partial(stay_action, stay_time=self.home_stay_time)), (self.go_back_weight, partial(back_action)), ], }

4.2 页面状态识别

def get_current_state(self): _current_page_url = self.page.url self.ui_logger.log(f"current page url: {_current_page_url}") if _current_page_url.startswith('https://www.google.com'): return "home" return "detail"

5. 系统启动与配置

5.1主流程启动配置

系统启动使用框架提供的start_main_page_process函数,支持重试机制和超时控制:

# 系统主流程启动 start_main_page_process( self, # 页面实例 GoogleSearchBrowsePage, # Facebook页面控制器类 retry=1, # 失败重试次数 timeout=60000 # 超时时间(毫秒) )

5.2 配置参数说明

Google自动化系统的行为通过以下权重参数进行调控:

# 动作权重配置示例 class GoogleSearchBrowsePage(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最佳实践建议

  1. 权重调优:根据实际需求调整各动作的权重比例
  2. 时间控制:合理设置停留时间和滚动持续时间
  3. 异常处理:完善check_exception_handler方法的异常检测逻辑
  4. 日志记录:充分利用页面对象的logger进行调试和监控
  5. 状态管理:根据业务需求扩展更多的页面状态

结语

本文详细介绍了基于RPA框架的Google自动化浏览系统实现方案。通过动作执行器模式、状态机管理和权重化随机动作系统,我们构建了一个功能完整、行为自然的自动化解决方案。

核心技术特点

  • 基于装饰器的动作执行器模式,代码结构清晰
  • 状态机管理不同页面的行为策略
  • 权重化随机动作系统,模拟真实用户行为
  • 智能内容识别和交互机制
  • 完善的异常检测和处理框架

系统优势

  • 高度模块化的设计,易于扩展和维护
  • 基于成熟RPA框架,稳定性有保障
  • 智能的页面状态识别和动作选择
  • 丰富的配置参数,适应不同使用场景

通过本文的学习,您已经掌握了Google自动化系统的核心开发技术。在下一篇文章《基于Chrome140的Google自动化(关键词浏览)——运行脚本(三)》中,我们将重点介绍系统的部署运行、监控管理和性能优化,帮助您将开发完成的自动化脚本投入实际应用。

http://www.jsqmd.com/news/333679/

相关文章:

  • SOC工具包v3.0:从Bug Hunter到事件响应的实用指南
  • 算法学习日记 | 模拟
  • AI智能分析系统在值班室的应用方案
  • AI进入Agent时代,CPU何以站上“算力C位”?
  • 基于PLC控制的自动洗车系统设计
  • 2026年激光测距传感器厂家实力推荐:钢厂/港机/行车/防爆型激光测距传感器及定位传感器全系供应与选型指南 - 品牌推荐官
  • 锅炉房原料发酵车间视频监控数据采集联网 数字化改造方案 智改数转
  • 2026年网站建设的六大核心原则体系
  • 【面试题】MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
  • 基于PLC控制的伺服电机的转速控制系统的软件设计
  • 青岛银行:激进的“扩张主义者”
  • 湘西土家族苗族自治州英语雅思培训机构推荐.2026权威测评出国雅思辅导机构口碑榜 - 苏木2025
  • 基于plc拉杆箱振动与噪音检测平台设计
  • 锦昊网络公司概况介绍,2026年它在泰州网络营销领域好用吗 - 工业品网
  • 基于plc控制自动门的设计
  • 湘西土家族苗族自治州英语雅思培训机构推荐;2026权威测评出国雅思辅导机构口碑榜 - 苏木2025
  • 郑州英语雅思培训机构推荐,2026权威测评出国雅思辅导机构排名榜 - 苏木2025
  • 合肥有认证证书的EJU课程学校有哪些推荐 - 工业推荐榜
  • 2026无水乙醇批发采购推荐指南:4大实力厂家深度测评排行榜 - 深度智识库
  • 学霸同款9个降AIGC平台 千笔AI帮你降AI率
  • 盘点2026年新风机品牌,哪个安装方便且性价比高? - mypinpai
  • (修复方案)反射型 XSS漏洞
  • 企业微信API实战:外部群推送全链路监控体系开发
  • 2026年湖南正宗螺蛳粉加盟选哪家,地道螺蛳粉加盟性价比分析 - 工业设备
  • 郑州英语雅思培训机构推荐;2026权威测评出国雅思辅导机构排名榜 - 苏木2025
  • 湘西土家族苗族自治州英语雅思培训机构推荐、2026权威测评出国雅思辅导机构口碑榜 - 苏木2025
  • 配电网的正常与故障重构中的孤岛划分技术探讨
  • 哪种网站服务器操作系统的安全性更高?
  • 2026年广州性价比高的毛绒布厂家排名,好用的品牌都有谁? - 工业品牌热点
  • 2025具身智能发展全景报告:从技术探索到场景落地,开启通用智能新征程