我想收集数据并最终从 linux 的打开窗口中解析它。
一个例子——假设一个终端窗口是打开的。我需要检索显示在该窗口上的所有数据。检索后,我会对其进行解析以获取输入的特定命令。
那么有可能做到这一点吗?如果是这样,怎么做?我更喜欢使用 python 来编码这整个事情。
我猜测,首先我必须为打开的窗口获取某种 ID,然后使用某种库从我拥有的 ID 的窗口中获取内容。
请帮忙。我是个新手。
我想收集数据并最终从 linux 的打开窗口中解析它。
一个例子——假设一个终端窗口是打开的。我需要检索显示在该窗口上的所有数据。检索后,我会对其进行解析以获取输入的特定命令。
那么有可能做到这一点吗?如果是这样,怎么做?我更喜欢使用 python 来编码这整个事情。
我猜测,首先我必须为打开的窗口获取某种 ID,然后使用某种库从我拥有的 ID 的窗口中获取内容。
请帮忙。我是个新手。
您可以(ab)使用工具包库中存在的辅助技术支持(用于屏幕阅读器等)。它是否会工作是特定于工具包的——Gtk 和 Qt 有这种支持,但其他的(如 Tk、Fltk 等)可能会也可能不会。
Linux 桌面测试项目是一个 python 工具包,用于滥用这些接口来测试 GUI 应用程序,因此您可以使用它或查看它的工作原理并做类似的事情。
我认为正确的答案可能是“有一些困难”。本质上,窗口的内容是位图。该位图由一大堆原语绘制(包括“使用该编码和特定字体显示此八位字节字符串”),但窗口内容仍然“只是像素”。
随着这些事情的发展,获得“仅像素”非常简单。你打开一个到 X 服务器的会话并说“给我窗口 W 的内容”,然后它就将它交给了。
不幸的是,用它做一些有用的事情是完全不同的事情,因为您可能必须(基本上)OCR 位图以获得您想要的。
如果您决定采取那条路线,请查看 的来源xwd
,因为实际上确实如此。
你对终端的执行有某种控制吗?在这种情况下,您可以script
在终端会话中使用该命令将所有交互记录到文件中,然后读取并解析该文件。
$ script myfile
Script started, file is myfile
$ ls
...
$ exit
Script done, file is myfile
$ parse_file.py myfile
如果终端在 内部运行screen
,您还有其他选择。Screen 内置了日志记录,screen -X
将命令发送到正在运行的屏幕会话(man screen)。