Разбор страницы с помощью AngleSharp - PullRequest
0 голосов
/ 04 июня 2018

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

1 Ответ

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

В зависимости от используемой схемы авторизации это может быть либо очень просто, либо сверхтвердо / невозможно.

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

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

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

Теперь, так как я не знаю, какую схему авторизации или точную проблему вы решаетебьют (некоторый код / ​​MWE был бы полезен!) Я просто пойду для простого примера щелчка.

var context = BrowsingContext.New(Configuration.Default.WithDefaultLoader().WithCookies());
var loginPage = await context.OpenAsync("http://yourpage.com");
var loginForm = loginPage.QuerySelector<IHtmlFormElement>("form");
var profilePage = await loginForm.SubmitAsync(new { userName = "myUser", password = "password" });
// get something on profilePage

Обратите внимание, что в этом примере имена полей формы для формы входа в систему userName иpassword - они могут отличаться для вашей страницы входа.Также обратите внимание, что ваша страница может содержать несколько форм, и селектор может быть более сложным, чем простой form.

HTH!

...