@Andrey-2

Как реализовать парсер сайта скриптами JS из приложения c#?

Хочу написать парсер для сайта, работать должен примерно так:

1) Получаем разметку
2) Получаем скрипты JS для обработки сайта (сторонние скрипты подключаются из определённой директории или адреса)
3) Обрабатываем полученную разметку скриптом на JS.
4) Вывод результатов.
Если проще, то в интерпретатор JS скармливаем html и получаем результат.
Да, я в курсе что существуют такие вещи как AngleSharp, HtmlAgilityPack и т.п. Но, нужно чтобы для каждого сайта были свои скрипты. А скрипты чтобы не перекомпилировать постоянно проект.

-------------------------------
Что на данный момент пробовал:

0) AngleSharp, HtmlAgilityPack не то.

1) Jint( Интерпретатор JS), JS работает, но есть проблема, не получается парсить разметку. Например: let doc = new DOMParser().parseFromString(string, "text/html"); , будет ошибка что нет такой функции.
Если есть у кого примеры по работе с ней буду благодарен.

2) CefSharp, то, но слишком много места занимает на диске.

Есть какие нибудь мысли по этому поводу?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
@rPman
Как бы ты не изворачивался, либо у тебя получится поддержка только подмножества веб приложений (и очень не эффективное) либо очередной браузер, но зачем, когда есть готовые.

Подключаешь к проекту какой-нибудь браузер, открываешь требуемую ссылку там, мониторишь итог на предмет окончания загрузки (отдельная проблема)...
например штатный компонент .net WebBrowser это древний internetexplorer11 на windows, но при запуске проекта на mono - это будет что то основанное на firefox

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

Войдите, чтобы написать ответ

Похожие вопросы