首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从正在运行的web浏览器获取HTML/DOM

从正在运行的web浏览器获取HTML/DOM
EN

Stack Overflow用户
提问于 2012-11-28 03:19:44
回答 3查看 234关注 0票数 0

如果这个问题太笼统,我很抱歉,如果它是请随时编辑。我正在设计一个人工智能系统,用来监控/观察人类与桌面环境的交互,并从中学习。我可以使用图像捕获和计算机视觉,但这增加了关于屏幕上交互元素的复杂性。我想知道是否有一种方法可以直接从浏览器获取用户与之交互的实际DOM或HTML元素(鼠标单击、焦点、kb输入等)。在windows中,我也许能够将DLL连接到浏览器中,但在Linux中,我不知道如何做类似的事情。这背后的想法是,当用户点击"Button“登录,而不是使用CV捕获图像像素,我实际上获得了用户交互的元素的数据结构。我怎么能做这样的事情呢?该引擎将是一个用C/C++开发的服务。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-28 04:08:27

如果您正在监视桌面环境,我对Linux环境有以下建议。

  1. 尝试捕获XWindow事件。由于窗口管理器,如KDE,GNOME等都是建立在它之上的,这可能会给你额外的information.
  2. With对浏览器的尊重,正如其他人所说的那样,最好是使用插件。它也是一个跨平台的解决方案。

X事件观察器的起始点是here。希望这对你有帮助。

票数 1
EN

Stack Overflow用户

发布于 2012-11-28 03:26:51

火狐的Selenium plugin通常用于测试,它有一个记录/回放机制,可以记录你正在寻找的事件类型。

票数 1
EN

Stack Overflow用户

发布于 2012-11-28 03:35:02

如果您的软件可以提示用户安装浏览器扩展,那么您可以很容易地为每个浏览器编写不同的扩展。这些都是相对容易编写的。

您可以找到一些可以嵌入到扩展中的开放源代码,比如Selenium代码库,或者简单地使用JavaScript库(jQuery?)捕获所有浏览器事件,并将看起来像用户交互(单击、滚动等)的事件与DOM详细信息和任何其他数据一起发送到您的系统。也许让你的引擎公开一个REST服务来进行集成。

不过,要注意性能--取决于你发送的信息量,你可能需要实现一个工作队列和批处理事件,或者你可能会减慢他们的浏览器。

OTOH,如果你需要离开他们的浏览器,那么我不相信你将能够以编程方式确定支持屏幕上像素的HTML/DOM结构。至少,不是我所知道的任何工具,逻辑支持这一点:因为每个浏览器都使用自己的代码库实现DOM操作和显示,所以内存中数据的格式是任何人都不知道的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13591473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档