2008-10-09 4 views
0

Я разработчик Java, и у меня есть вопрос об автоматизации заданий, которые мне даны. Мне нужно 3 раза в день, войдите на этот сайт, который у нас есть на работе, выберите несколько элементов формы, а затем нажмите «Отправить», чтобы распечатать отчет. Мне интересно, как я могу написать какой-то скрипт, который будет автоматизировать эту задачу? С чего начать? На каком языке я должен это делать? Я думал, что PHP может это сделать или даже сценарий greasemonkey возможно?Автоматизация получения отчета с веб-страницы

Большое спасибо.

ответ

2

Отъезд cURL в PHP. Он позволяет выполнять все обычные функции веб-браузера с кодом (кроме перемещения мыши). И да, вам нужно сделать скрипинг экрана.

+0

Привет, у меня была такая же проблема, и я попробовал cURL, но не смог обработать файлы cookie. Не могли бы вы опубликовать фрагмент кода о том, как с ними бороться? (У меня есть только слабые знания о файлах cookie). – 2012-11-02 11:00:11

0

Это называется «веб-соскабливание» или «скрипинг экрана», и для этого существует множество библиотек. Я не мог говорить с java-специфическим инструментом, хотя: я парень .Net (путь .Net был бы System.Net.WebClient или System.Net.HttpWebRequest/System.Net.HttpWebResponse). Но я уверен, что есть что-то.

В то же время первым шагом является переход на страницу ввода значений формы и просмотр источника страницы. Найдите конкретный элемент формы <>, который вы заполняете, и посмотрите, где он находится (это action). Затем найдите любой вход <> < выберите>, < textarea> элементы, которые вы используете, включая любые скрытые входы для формы, и выясните, какие значения вам нужно получить. Это расскажет вам, как построить свой запрос, как только вы найдете библиотеку, которая позволит вам отправить ее.

Если вам нужно сначала зайти на сайт, чтобы перейти на страницу, все может быть сложнее. Возможно, вам придется извлекать и анализировать значение сеанса или отправлять определенные файлы cookie на сервер.

0

Я не знаю, на каком языке ваша форма написана, но то, что вы могли бы сделать, это:

  • переписать форму в скрипт, который генерирует отчет при вызове
  • использовать cron запись в планируйте эту задачу, которая будет выполняться ежедневно, и отправьте сообщение на ваш адрес

Cron - это в основном задача, запланированная для Unix-систем. Серверы на базе Windows могут использовать планировщик заданий практически в том же самом конце.

Вышеприведенный предполагает, что у вас есть доступ к скрипту, который генерирует отчет в данный момент, и может его модифицировать/скопировать в новый файл, который отправит вам сообщение по электронной почте. Если нет, тогда вам, возможно, понадобится посмотреть на скрипинг экрана. Поскольку вы разработчик Java, вы можете найти this list of Java screen scraping utilities, чтобы вы начали.

1

Я думаю, что потенциальная точка прилипания, которая еще не была затронута, - это ваша фраза «вход на этот сайт» ... В зависимости от того, как вам нужно войти в систему, вам может потребоваться пройти через черный ход доступ к отчету.

У меня были проблемы с подобными вещами в прошлом, когда мне приходилось загружать отчет с стороннего сайта. Проблема заключалась в том, что я не мог аутентифицироваться для доступа к параметрам отчета из-за жестко закодированного и менее понятного для скрипта способа, который мне требовался для входа на сайт. Однако я предполагаю, что ваш сайт является внутренним для вашей организации, поэтому может быть возможно обойти/переработать требования безопасности для доступа к данным. Если это так, то вы должны иметь возможность использовать один из методов скрипирования экрана, описанных выше.

Если нет, возможно, вам потребуется включить фактическую процедуру входа в ваш скрипт или приложение, загрузить и убрать все файлы cookie, которые могут быть установлены, и включить их в запрос данных.

Смежные вопросы