|
|
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
Привет всем. Можете подсказать в каком направлении копать, чтобы подружить Delphi и какой либо из HeadLess браузеров? Очень желательно чтобы это был Chrome Headless. CEF не предлагать, ибо по факту он не поддерживает headless mode. Вернее, он "как бы" поддерживает, но в итоге Chromium HeadLess жрет столько же ресурсов что и обычный Chromium (CEF) Поэтому смысла в таком headLess браузере нет. С другой стороны - HeadLess Chrome в headless mode жрет гораздо меньше ресурсов, чем в обычном режиме. И так как из языков программирования я знаю только Делфи (да, я лох))), хотелось бы как то подружить это все. Задача - парсинг страниц с помощью JS. Эта задача отлично выполняется сейчас с помощью Chromium. Но каждая страница в таком режиме жрет и память и процессор как обычный браузер. Хочется значительно уменьшить это пожирание ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2019, 09:36 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
что такое HeadLess ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2019, 10:43 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
Basketbol, Используй chromium, сделай один процесс браузера и уменьши ресурсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2019, 11:07 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
Если парсинг простой и страницы простые (без JS, подгрузок и пр.), то я бы вообще использовал какую-нибудь простую библиотеку - Synapse, Indy и пр. Чуть больше кода, но зато гораздо эффективнее. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2019, 11:24 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
"HeadLess" - безголовый. Т.е браузер, который работает в фоном режиме, не виден пользователю, и поэтому не жрет ресурсы на отображение страниц, картинок, рендеринг и т.д. Но при этом выполняет JS скрипт на страницах. .. ziv-2014Basketbol, Используй chromium, сделай один процесс браузера и уменьши ресурсы. Это все равно дофига ресурсов на отображение страницы. У headless браузера это занимает меньше памяти. ziv-2014Если парсинг простой и страницы простые (без JS, подгрузок и пр.), то я бы вообще использовал какую-нибудь простую библиотеку - Synapse, Indy и пр. Чуть больше кода, но зато гораздо эффективнее. В том то и дело, что парсинг непростой. Речь идет о парсинге страниц букмекерских контор. На них каждую секунду меняются коэффициенты. P.S. И не нужно предлагать разбираться в сетевых ГЕТ и ПОСТ запросах. Просто поверьте на слово - это дико сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2019, 15:38 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
Basketbol, У тебя существуют 3 варианта: 1. Chromium - уменьшить все что можно. 2. Htmlviewer ( https://github.com/BerndGabriel/HtmlViewer) + легковесный js (например, этот https://github.com/grijjy/DelphiDuktape) - но есть ограничения и придется попотеть, чтобы все это поженить. Но легковесней представить сложно. 3. Обрабатывать GET и POST запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2019, 18:52 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
ziv-2014Basketbol, У тебя существуют 3 варианта: 1. Chromium - уменьшить все что можно. 2. Htmlviewer ( https://github.com/BerndGabriel/HtmlViewer) + легковесный js (например, этот https://github.com/grijjy/DelphiDuktape) - но есть ограничения и придется попотеть, чтобы все это поженить. Но легковесней представить сложно. 3. Обрабатывать GET и POST запросы. ziv-2014 , спасибо за ответ. Вселенная послала мне человека, который все это уже решил и решил с помощью Chromium. Сейчас мне предстоит перенять этот чудесный опыт. Видимо, до сих пор я не понимал всей мощи Chromium. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2019, 08:35 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
Basketbol> Вселенная послала мне человека, который все Basketbol> это уже решил и решил с помощью Chromium. Basketbol> Сейчас мне предстоит перенять этот чудесный опыт. Ты ссылку-то приведи на его опыт, настройки и пр. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2019, 08:41 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
В любом случае все headless браузеры управляются банальными GET/POST запросами на порт интерфейса. Протокол стандартизован W3C (хотя у хрома есть и собственная реализация). Протокол очень прост, а если взять пример на другом языке, так и вообще делается за день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2019, 10:39 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
Basketbol"HeadLess" - безголовый. Т.е браузер, который работает в фоном режиме, не виден пользователю, и поэтому не жрет ресурсы на отображение страниц, картинок, рендеринг и т.д. Но при этом выполняет JS скрипт на страницах. ..это очень серьёзный пунктик, эта фигня обычно очень сильно под ряд популярных браузеров заточена и довольно ресурсоёмкая т.е. некуда не деться, придётся использовать что-то популярное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2019, 11:48 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
Надо определиться с терминологией. Либо браузер "живет" внутри вызывающего приложения как библиотека, либо это полноценный сетап браузера, просто запуенный в невизуальном режиме. В первом случае возможны всякие нюансы типа трудностей вызова из фонового потока, во втором же браузеру пофигу, откуда им управляют. Могу порекомендовать PhantomJS, состоящий из одного экзешника. Правда, не обновляется с 2013, и некоторые сайты уже могут не работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2019, 14:44 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
X11Проблема браузеров в том, что они не умеют нормально работать без окон, в потоке Что мешает в потоке запустить оконный цикл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2019, 15:24 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
Окно должно быть "видимым". Не так всё просто. Не знаю, как оно с хромиумом, у с Edge/IE мороки хватает. К сожалению с Edge/IE нормально не хотят работать некоторые сайты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2019, 15:46 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
X11Окно должно быть "видимым". Не так всё просто.Иногда помогают танцы с бубном типа видимого окна с координатами -3/-3 и размерами 1/1 (или даже 0/0, если хватит) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2019, 14:12 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
BasketbolВселенная послала мне человека, который все это уже решил и решил с помощью Chromium. Сейчас мне предстоит перенять этот чудесный опыт. Видимо, до сих пор я не понимал всей мощи Chromium. Видимо - мимо. Как это часто бывает - наобещал камаз всего и вся - взял предоплату и пропал) Теперь копаю в сторону Delphi + Chrome Headless который управляется по порту. Для меня странно, что уже существуют обертки для PHP, NODE.JS, PYTHON и др. языки и среды, а для Delphi еще нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2019, 16:11 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
BasketbolДля меня странно, что уже существуют обертки для PHP, NODE.JS, PYTHON и др. языки и среды, а для Delphi еще нет... Это как раз не странно, это правда жизни. Мало того что пик популярности языка давно миновал, так еще и долгое отсутствие стандартных HTTP компонентов сделало свое черное дело. Правда, сейчас с появлением THTTPClient ситуация может потихоньку налаживаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2019, 17:45 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
кстати, вроде у каких-то из этих компонентов на базе хрома была возможность рендера в памяти без вывода окна на экран ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2019, 17:55 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
ziv-2014Basketbol, Возьми https://github.com/salvadordf/CEF4Delphi Там есть пример как вызывать js код. Так это я уже 55 лет использую)) Проблема то не в том, чтобы JS скрипт выполнить, а в том, как это сделать минимально возможными ресурсами. Когда TChromium запускаешь с ключом --headless - смотрю по диспетчеру задач - все то же самое. Хотя отрисовки действительно нет. И где то на просторах интернета ( https://bitbucket.org/chromiumembedded/cef/issues/2349/headless-mode-without-x) в одном комментарии написано: CEF does not support Chrome headless mode. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 09:45 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
Копаю в сторону работы Headless Chrome (не CEF). Вот здесь описан "протокол" взаимодействия с Хромом: https://chromedevtools.github.io/devtools-protocol/tot/ Общаюсь с одном человеком - он использует Chrome Headless из Perl (Написал свой класс) Говорит - можно из любой среды работать с ним с помощью неблокирующих сокетов. Но я ващщще не понимаю с чего там начать) Т.е. так то в принципе все понятно: запускаем headless chrome Код: php 1. Дальше общаемся с помощью сокетов по указанному порту. Но какие команды посылать? Как открывать новые вкладки? Как ожидать событие полной загрузки документа? Как идентифицировать и общаться с конкретными вкладками? Как запустить в нем JS скрипт? Как получить вывод JS скрипта? Вообщем - читаю эту документацию - и даже зацепиться не за что)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 09:55 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
BasketbolПроблема то не в том, чтобы JS скрипт выполнить, а в том, как это сделать минимально возможными ресурсами. Когда TChromium запускаешь с ключом --headless - смотрю по диспетчеру задач - все то же самое. Хотя отрисовки действительно нет. И где то на просторах интернета ( https://bitbucket.org/chromiumembedded/cef/issues/2349/headless-mode-without-x) в одном комментарии написано: CEF does not support Chrome headless mode. Ты используешь Chrome - он по своей природе не умеет минимальными ресурсами, тем более твою задачу. Ты в принципе можешь сделать 1 процесс и уменьшить объем памяти. Но жрать то он всеравно будет прилично. Тогда используй его последовательно. Загрузил одну задачу, обработал, берешь следующую и т. д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 09:57 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
Вот тут для си# есть https://github.com/ChromeDevTools/awesome-chrome-devtools ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 10:04 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
ziv-2014Ты используешь Chrome - он по своей природе не умеет минимальными ресурсами, тем более твою задачу. Ты в принципе можешь сделать 1 процесс и уменьшить объем памяти. Но жрать то он всеравно будет прилично. Тогда используй его последовательно. Загрузил одну задачу, обработал, берешь следующую и т. д. Тут все дело в конкретных цифрах: отрисовка всего и вся занимает часть ресурсов. Насколько меньше безголовый хром будет жрать ресурсов по сравнению с обычным? Скажем если безголовый хром потребляет ресурсов раза в 4 меньше чем обычный - меня бы это устроило. По крайней мере когда я из командной строки открываю одну и ту же страницу в обычном хроме и в безголовом - то разница чуть ли не в 10 раз, + меньше процессов. И насчет последовательности: мне это нужно для ОДНОВРЕМЕННОГО парсинга большого количества страниц, контент на каждой из которых меняется очень быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 10:14 |
|
||
|
Delphi + HeadLess браузер
|
|||
|---|---|---|---|
|
#18+
ziv-2014Вот тут для си# есть https://github.com/ChromeDevTools/awesome-chrome-devtools За это спасибо. Пойду почитаю. Может что то и прояснится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 10:17 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39817508&tid=2038794]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
146ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 468ms |

| 0 / 0 |
