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

playwright 免API实现kimi聊天机器人

 模拟是一个强大功能,在爬虫应用中,基本可以实现不仅爬数据,还能爬功能。

以下是通过playwright模拟kimi回答。这就是窃取神通!!!爬功能!!!

就是牺牲了部分速度。。哎。。。

from playwright.sync_api import sync_playwright
import timewith sync_playwright() as p:bro = p.chromium.launch(headless=True, slow_mo=2000)page = bro.new_page()page.goto('https://kimi.moonshot.cn/')# 定位到输入框,进行文本录入page.locator('.chat-input-editor').fill('用c语言写一个快排')  # id定位# 定位搜索按钮,进行点击操作page.locator('.send-icon.iconify').click()# 用于存储已经输出过的段落文本output_history = set()output_history1 = set()while True:paragraphs = page.eval_on_selector_all('.paragraph','elements => elements.map(element => element.textContent.trim()).filter(text => text.length > 0)')paragraphs1 = page.eval_on_selector_all('.segment-code','elements => elements.map(element => element.textContent.trim()).filter(text => text.length > 0)')# 将获取到的段落文本转换为集合,方便比较current_paragraphs = set(paragraphs)current_paragraphs1 = set(paragraphs1)# 找出新的段落文本(不在历史记录中的)new_paragraphs = current_paragraphs - output_historynew_paragraphs1 = current_paragraphs1 - output_history1# 如果有新的段落文本,就输出它们if new_paragraphs:#给出说明print(', '.join(new_paragraphs), end='')# 更新历史记录output_history.update(new_paragraphs)if new_paragraphs1:#这是给出代码print(', '.join(new_paragraphs1), end='')# 更新历史记录output_history1.update(new_paragraphs1)if not new_paragraphs and not new_paragraphs1 :breaktime.sleep(5)  # 等待5秒后再次获取print(end ="\n")print('结束')page.close()

效果如下:

简单总结一下

page.eval_on_selector_all

这是 Playwright 提供的一个方法,用于在页面上查找所有匹配指定选择器的元素,并对这些元素执行一段 JavaScript 代码。

第一个参数是一个 CSS 选择器(这里是 '.paragraph'),它用来定位页面上所有带有 paragraph 类的 HTML 元素。第二个参数是一段 JavaScript 表达式,这段代码会在浏览器环境中运行。

elements => elements.map(element => element.textContent.trim()).filter(text => text.length > 0)

这段 JavaScript 代码对找到的所有元素进行处理,提取它们的文本内容,并去除空文本。1。1.elements.map(element => element.textContent.trim())

2.trim() 去除文本内容两端的空白字符(比如空格、换行符等)。

3.element.textContent 获取元素的文本内容。map 方法遍历每个元素,对每个元素执行 element.textContent.trim() 操作。

4.elements 是一个包含所有匹配元素的数组。.filter(text => text.length > 0)text.length > 0 确保只保留有实际内容的文本。filter 方法过滤掉空文本内容。

最终,这段代码会返回一个数组,数组中的每个元素都是页面上带有 paragraph 类的元素的非空文本内容。

http://www.xdnf.cn/news/1544.html

相关文章:

  • 题解:CF2072F Goodbye, Banker Life
  • 经颅超声刺激设备的技术指标简析
  • vue3:十一、主页面布局(修改顶部导航栏样式-右侧:用户信息+退出登录+全屏显示)
  • 【计算机视觉】CV实战项目 - 基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化
  • C# 音频分离(MP3伴奏)
  • 人脸识别考勤系统实现教程:基于Face-Recognition、OpenCV与SQLite
  • 【Yii2】Yii2框架的一次BUG排查
  • 【KWDB 创作者计划】_嵌入式硬件篇---寄存器与存储器截断与溢出
  • 2025 年免费 Word 转 PDF 转换器有哪些?
  • 【RocketMq源码篇-01】环境搭建、基本使用、可视化界面
  • Java中正则表达式使用方法
  • Java发展史及版本详细说明
  • JVM性能优化之老年代参数设置
  • 深入浅出学会函数(上)
  • ArcGIS Pro跨图层复制粘贴
  • mongo客户端操作mongodb记录
  • 【Python爬虫实战篇】--Selenium爬取Mysteel数据
  • 堆和二叉树--数据结构初阶(3)(C/C++)
  • K8S学习路线图:从入门到精通的技术成长指南
  • STM32 串口USART
  • unity使用iTextSharp生成PDF文件
  • AI时代的能力重构与终身进化
  • 1.1 java开发的准备工作(入门)
  • day4 pandas学习
  • Java面试场景篇:MCP使用场景与实现详解
  • 【⼆分查找】⼆分查找(easy)
  • RBAC权限-笔记
  • mybatis高级查询:一对多配置,一次性查出主表和子表中的数据
  • 《楞严经》中“魔”与魔王波旬的关联性分析
  • 《系统分析师-第三阶段—总结(五)》