Автоматизация получения отчета с веб-страницы

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

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

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

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

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

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

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

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

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

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

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

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

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