Что использовать для автоматизаций действий в браузере в параллельном или многопоточном режиме?

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

А так, где не читал говорят о Selenium, но он у меня плохо работает в параллельном или многопоточном режиме использует много ОЗУ и мощностей ЦП. Также читал про Selenium Grid и Selenoid, но не знал, что выбрать и как настроить.

Расскажите пожалуйста и что лучше использовать для автоматизаций действий в браузерах. И как запустить чтобы всё работало (лучше с примерами на С# ну или на Python).

Буду благодарен кто поможет с этими вопросоми.

Кому трудно объяснять кинет хоть ссылку, где можно почитать и найти ответ.

А также не вините меня если что не корректно написал.
  • Вопрос задан
  • 264 просмотра
Пригласить эксперта
Ответы на вопрос 4
alekciy
@alekciy
Вёбных дел мастер
но он у меня плохо работает в параллельном или многопоточном режиме использует много ОЗУ и мощностей ЦП

Именно так. Это просто нужно учитывать при расчете необходимых мощностей. В настоящее время с этим все лучше и лучше. SSD диски и мощные многоядерные CPU.

Лично у меня схема по минимальному потреблению ресурсов выглядела так. Это PhantonJS 1.8 (ныне уже не поддерживаемый) который запускался с webdrive режиме в количестве 30 штук. Вот ровно прямо программа запускалась этом количестве. Каждая копия резидентно жрала ~200-900 Мб и постоянно текла по памяти (при >1.5Гб копия жестко убивалась). Каждая копия слушала свой порт с webdrive командами. Крутилось все на, если не ошибаясь 32ГБ ОЗУ и 16 CPU. Выдавал такой кластер что-то около 10RPS.

Т.е. смотреть в сторону кластерных решений придется при более менее серьезном подходе к такой задаче. Selenium Grid в целом конечно староват. Selenoid выглядит посвежее. Смотрите в сторону готовых кластерных решений на базе этих технологий либо напиши свою обвязку. При работе по webdrive язык в принципе не важен.
Ответ написан
Noizefan
@Noizefan
Тебе нужен headless chrome и интерфейсы для работы с ним из под того, что тебе нужно
А вообще рекомендую позаколебаться и написать весь твой многопоток в ручной режим, эффективнее выйдет и дороже
Ответ написан
Комментировать
На C# использую CefSharp не знаю на сколько оно вам подойдет.
Ответ написан
@rPman
c# а точнее .net в поставке имеет контрол WebBrowser, это полноценный браузер (раньше был интернет эксплорер, сейчас хз edge это или уже на webkit, если использовать mono то это будет firefox), с ним невероятно просто работать, хотя на практике вместо того чтобы ковыряться в DOM документа средствами .net лучше это делать внедрив javascript внутрь страницы.

Выглядит работа примерно так, кидаете на форму контрол, на событие onload получаете доступ к документу webControl.document, дальше это уже браузерные dom методы. Совет, вместо добавления script на страницу лучше запускайте ее по таймеру .setInterval с нулевым интервалом, тогда скрипт будет запущен в контексте страницы а не какой то песочницу .net хотя последнее возможно подойдет для многопоточного доступа (осторожно контрол не предполагает многопоточность, но вы можете по ксперементировать, открыв несколько контролов и работая с ними из разных потоков, отпишитесь о результатах)

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

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

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