AngleSharp нажмите без интерфейса пользователя - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь получить информацию от C # и (AngleSharp или HTML Agility Pack) о доступных расписаниях с веб-страницы.Проблема в том, что чтобы увидеть, какие расписания доступны в разные дни, нужно нажать «div» (предыдущий, следующий).Таким образом, чтобы иметь месячные графики, я должен был бы пролистать страницу за страницей.Проблема, которую я нахожу, заключается в том, что я не могу нажать на div.В отличие от JavaScript в консоли Chrome, если я могу это сделать.Я видел, что есть аналогичный ответ с использованием DoClick на IHtmlElement, но он не работает, я не меняю страницу.Браузер продолжает присваивать тот же HTML-код в документе.

1 Ответ

0 голосов
/ 09 декабря 2018

Давайте сначала посмотрим, что можно сделать с помощью AngleSharp:

  • Любые запросы, в т.ч.их манипуляции (по запросу, но также и до ответа)
  • Общее управление файлами cookie (и их манипулирование, конечно же)
  • Запрос DOM и выполнение «простых» действий (например, нажатие кнопки,отправка формы)
  • Запуск тривиальных файлов JavaScript

Здесь тривиальное средство: сценарии, которым не нужны какие-либо возможности, помимо предлагаемых AngleSharp, например, рендеринг информации о дереве, расширенный доступ CSSOM,... - или сценарии, которые требуют парсеры, не совместимые с ES5 (например, используют ES6 или некоторые специальные нестандартные возможности).

Проблема, которую я вижу в описании вашего вопроса, заключается в том, что для "щелчка"div на странице скрипт должен быть запущен.Этот скрипт теперь может попасть в категорию «тривиальных», однако, скорее всего, это не так.Теперь у вас есть 2 варианта:

  • Попробуйте и, может быть, он работает / отлично, в противном случае ...
  • Посмотрите, что делает скрипт (очевидно, какой-то HTTP-запрос в конце концов ...) и сделать то же самое

Последнее, конечно, может быть повторно реализовано в C # / AngleSharp.Таким образом, вы можете создать HTTP-запрос, получить данные и либо сделать что-то непосредственно с этим набором данных (это может быть JSON и уже то, что вы хотите ....) или (если он обслуживает частичный HTML), повторно проанализировать его и интегрироватьэто на реальной странице.

HTH!

...