0

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

Мне необходимо, через консольное приложение на c#. Поработать с некоторыми элементами сайта, например обратиться к выпадающим спискам и выбрать там необходимое значение, после выбора необходимых значение обратиться к кнопке, которая на этом сайте генерирует эксель файл и он скачивается. В идеале чтобы окно браузера даже не открывалось, мне это нужно для рутинной, ежедневной задачи, нужно чтобы в фоне работало.

ne0n
  • 49
  • 1
    1, 2, остальное зависит от конкретной задачи (JSON, соккеты и прочее). – EvgeniyZ Feb 01 '22 at 11:39
  • класс HttpClient, пакет HtmlAgilityPack, асинхронное программирование – aepot Feb 01 '22 at 12:16
  • Решил попробовать через GET запросы, но зная GET запрос, введя его в строку он не отрабатывает и пишет что Не удается получить доступ к сайту Веб-страница по адресу https://a8club.app.enes.tech/api/v2/stat/reports/?format=xlsx&office_id=1&type=shop_quantity&from_date=2022-02-01T19:00:00&to_date=2022-02-01T17:36:00, возможно, временно недоступна или постоянно перемещена по новому адресу.

    ERR_INVALID_RESPONSE

    – ne0n Feb 01 '22 at 17:27
  • Как отправить GET запрос с параметрами? Мне кажется он не отрабатывает потому что на этом сайте идет проверка на авторизацию, я через приложение Fiddler погонял запросы, там тоже была ошибка сначала пока я не начал передавать параметр Authorization:Token тд.

    @aepot

    – ne0n Feb 01 '22 at 17:34

1 Answers1

1

Возможно вам подойдёт Selenium:
Плюсы:
Гибкость. Обход защиты от ботов.
Нет проблем с непрогрузкой страниц.

Минусы:
Достаточно много жрёт памяти и CPU.
Это отдельное окно с браузером.

Yotic
  • 859
  • Не получилось обратиться через него к элементам сайта, у сайта на кнопке или текстбоксе нет ни id, ни имени класса. – ne0n Feb 01 '22 at 17:38
  • Используйте XPath и FullXPath – Yotic Feb 01 '22 at 17:38
  • 1
    Серьёзно, невозможно не найти элемент – Yotic Feb 01 '22 at 17:39
  • Подскажите как обратиться и работать с комбобоксами? – ne0n Feb 01 '22 at 18:38
  • Ссылку на сайт, посмотрю – Yotic Feb 01 '22 at 20:10
  • Ссылку давать нет смысла, вы там не зарегаетесь. Но у меня все получилось, все само авторизуется и выбирает нужные даты на дататайме и в комбобоксах. начинается качаться файл, и вот тут уже снова нужна ваша помощь. Можно ли как то поймать (ответ от сайта) скачку файла и в полете переименовать его? – ne0n Feb 01 '22 at 20:25
  • Вы можете не нажимать на кнопку скачать(Если у вас эта кнопка есть), а скопировать её ссылку и уже через new WebClient().DownLoadFile(string url, string path); задать нужный путь, а в конце пути название.
  • Так же вы можете(Как заявляет разработчик) имитировать нажатия в кнопку скачивания Element.SedKeys(string path) и он скачается по нужному пути (Я в это не верю...) 2) Каждое скачивание очищать папку Download и смотреть что файл скачался, далее переименовывать и перемещать

    – Yotic Feb 01 '22 at 22:03
  • Подскажите, решил использовать Selenium. Разобрался, все получилось.

    Но есть одно когда программа отрабатывает и браузер закрывается остается консольное окно висеть. Enviroment.Exit(0) или через Process.Kill не закрывает его ни в какую, иногда, но очень редко окно данное само закрывается.

    – ne0n Feb 02 '22 at 18:31