Автор Тема: как написать скрипт в Альт Образование 10.1, чтобы скрипт сам вошел на сайт  (Прочитано 452 раз)

Оффлайн genand1947

  • Давно тут
  • **
  • Сообщений: 225
Пришли результаты олимпиады в приложенном файле: edu213049_sas22_11_result.xls
На без ФИО, как написать скрипт в Альт Образование 10.1, чтобы скрипт сам вошел на сайт:
https://uts.sirius.online/
подставил коды участников из приложенного файла и выгрузил нам ФИО участников ?

Оффлайн Александр Ерещенко

  • Завсегдатай
  • *
  • Сообщений: 1 153
По сути тут надо писать парсер, который будет логиниться на этом сайте, а потом вытаскивать строку, прописанную в <div class="user_info">
Осложняется это тем, что сайт динамический, почти полностью на JS
Возможно, проще будет не писать полностью своё, а использовать средства автоматического тестирования web-приложений, напр., Selenium с обвязкой на Python

Кстати, ваш файл xls - это на самом деле csv в кодировке cp-1251

Оффлайн genand1947

  • Давно тут
  • **
  • Сообщений: 225
Кстати, ваш файл xls - это на самом деле csv в кодировке cp-1251
Пришлось просто переименовать из csv в xls, чтобы загрузился на форум.

Оффлайн N0rbert

  • alt linux team
  • ***
  • Сообщений: 231
  • snk@
Я бы предложил использовать Selenium с ChomiumDriver (входит в состав пакета chromium) и дальше делать свой скрипт на Python3.
Ставите пакеты так от root:

apt-get install chromium python3-module-selenium

Набросок скрипта Python3 ниже:

#!/usr/bin/python3
import sys
from selenium import webdriver

# данные для поиска
if __name__ == "__main__":
    if len(sys.argv) >= 2:
        search_string = sys.argv[1];
    else:
        print("Использование {} с одним аргументом: код_участника".format(sys.argv[0]))
        print("Пример вызова: {} my-id-is-long\n".format(sys.argv[0]))
        sys.exit()

# инициализация Chromium Driver
driver = webdriver.Chrome();

# 1 - открываем страницу
driver.get("https://uts.sirius.online/");

# 2 - вводим id
text_input = driver.find_elements_by_xpath("/html/body/section/div/div[6]/div[2]/input");
text_input[0].send_keys(search_string);

# 3 - нажимаем кнопку
driver.find_elements_by_xpath("/html/body/section/div/div[6]/div[3]")[0].click();

Сохраните его рядом с табличкой под именем olymp.py, например. Далее сделайте его исполняемым chmod +x olymp.py и вызывайте ./olymp.py id.

Пройтись по всем строкам таблицы этим Python-скриптом можно попробовать так:

for id in $(cat edu213049_sas22_11_result.xls | grep ^edu | awk -F\; '{print $4}'); do ./olymp.py "$id"; done

Очень зря у них нет капчи.
« Последнее редактирование: 01.11.2022 23:58:10 от N0rbert »