有没有办法将文本从浏览器复制到我的Java应用程序?
例如,在我的屏幕左侧,我打开一个浏览器指向一个URL并显示该页面的内容,它可能位于屏幕右侧的框架或CSS或简单的html中打开Java Swing应用程序。我对浏览器窗口中显示某些文本的某些部分感兴趣,我希望我的Java应用程序[没有我做任何事情]将文本复制并粘贴到自身中,是否可以完成?
我知道我可以使用JEditorPane或JTextPane并使用HTMLEditorKit设置它,然后将文本加载到窗格中,但如果页面使用Frames或其他一些复杂方式,我从Pane获取的文本不是我看到的在页面上,所以我不想通过将URL加载到我的Java应用程序来实现它,相反,我想知道它是否可以按照我上面提到的方式完成?
答案 0 :(得分:2)
我认为你从错误的角度看问题。如果你想要的是收获一个网站,我建议你看一下很棒的图书馆web-harvest。通过一点Xpath魔法,您可以获得所需的一切。 做你所描述的将意味着进程间的沟通,这似乎是一种矫枉过正。下载网页内容的方式多于浏览器。
答案 1 :(得分:1)
您可以根据需要尝试以下操作。
使用java.awt.Robot
,您可以1)截取您所需要的内容(没有文字,只是浏览器内容的图像)或2)将您的自己移动到浏览器中并以编程方式按下:按CTRL-A + CTRL-C并返回你的摇摆应用程序焦点并以编程方式按下:CTRL-V(或CMD或在你的操作系统中有意义的任何内容)
但是,根据您的需要,这可能或不起作用。
答案 2 :(得分:1)
我知道一种工具,但我不确定它是否符合您的需求。你听说过硒吗? http://seleniumhq.org/它可以复制用户在浏览器中执行的操作,然后使用java代码对其进行操作。看看它可能很方便的链接。
答案 3 :(得分:0)
使用java.awt.Robot
& TextField将完成工作,不确定是否还有其他方法。让机器人按ctrl + a然后按ctrl + c,将TextField置于焦点,最后让机器人按ctrl + v。现在,您可以在此处创建一个button.setOnAction,将TextField文本保存为字符串。或者您可以在TextField setOnKeyReleased上使用更改侦听器来执行相同的操作。