Как скопировать текст из браузера с Java? - PullRequest
0 голосов
/ 25 марта 2011

Есть ли способ скопировать текст из браузера в мое приложение Java?

Например, в левой части экрана я открываю браузер, который указывает на URL-адрес и показывает содержимое этой страницы, оно может быть в рамке или в CSS или в простом HTML-формате, в правой части экрана. откройте приложение Java Swing. Мне интересны определенные части окна браузера, в которых отображается некоторый текст, и я хочу, чтобы мое приложение Java [без каких-либо действий] скопировало и вставило текст в себя, можно ли это сделать?

Я знаю, что могу использовать JEditorPane или JTextPane и установить его с HTMLEditorKit, а затем загрузить текст в панель, но если страница использует фреймы или другие сложные способы, текст, который я получаю из панели, не тот, который я вижу на странице, поэтому я не хочу делать это, загружая URL-адрес в свое Java-приложение, вместо этого мне интересно, можно ли это сделать так, как я упоминал выше?

Ответы [ 4 ]

2 голосов
/ 25 марта 2011

Я думаю, что вы смотрите на проблему с неправильной точки зрения.Если вы хотите собрать веб-сайт, я предлагаю вам взглянуть на потрясающую библиотеку web-Harvest С небольшим колдовством Xpath вы можете получить все, что вы хотите.Выполнение того, что вы описываете, подразумевает межпроцессное общение, которое кажется излишним.Есть больше способов загрузить контент веб-страницы, чем браузер.

1 голос
/ 25 марта 2011

Я знаю инструмент, но я не уверен, что он соответствует вашим потребностям.Вы слышали о селене?http://seleniumhq.org/ Может копировать действия, предпринятые пользователем в браузере, а затем манипулировать ими, используя код Java.Посмотрите на ссылку, это может быть удобно.

1 голос
/ 25 марта 2011

Вы можете попробовать следующее в зависимости от ваших потребностей.

С помощью java.awt.Robot вы можете либо 1) сделать снимок экрана, если вам нужен контент (без текста, просто изображение содержимого браузера), либо 2) переместить себя в браузер и программно нажать: CTRL-A + CTRL-C и вернитесь к фокусу вашего свингового приложения и программно нажмите: CTRL-V (или CMD, или что-то еще, что имеет смысл в вашей ОС)

Но опять же, это может или не работать, в зависимости отна то что тебе нужно.

0 голосов
/ 04 июня 2014

Использование java.awt.Robot & TextField выполнит работу, не будучи уверенным, есть ли другой способ.Попросите робота нажать Ctrl + A, затем Ctrl + C, навести фокус на TextField, и, наконец, робота нажмите Ctrl + V.Теперь вы можете создать button.setOnAction, чтобы сохранить текст TextField в строку.Или вы можете использовать прослушиватель изменений в TextField setOnKeyReleased, чтобы сделать то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...