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

#php #post #automation #scripting #greasemonkey

Вопрос:

Я разработчик Java, и у меня есть вопрос об автоматизации поставленной передо мной задачи.

Мне приходится 3 раза в день заходить на этот веб-сайт, который у нас есть на работе, выбирать несколько элементов формы, а затем нажимать «Отправить», чтобы распечатать отчет.

Мне интересно, как я могу написать какой-то скрипт, который автоматизирует эту задачу? С чего мне следует начать? На каком языке я должен это делать? Я подумал, что PHP, возможно, сможет это сделать, или, возможно, даже скрипт greasemonkey?

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

Ответ №1:

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

Комментарии:

1. Привет, у меня только что была та же проблема, и я попробовал завить, но не смог справиться с печеньем. Не могли бы вы опубликовать фрагмент кода о том, как с ними бороться? (У меня просто слабые знания о файлах cookie).

Ответ №2:

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

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

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

Ответ №3:

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

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

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

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

Ответ №4:

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

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

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