Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Chromium cef3 в отдельном потоке / 25 сообщений из 81, страница 1 из 4
01.09.2016, 13:30
    #39301896
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
К сожалению, первую тему www.sql.ru/forum/1229066/chromium-cef3 зафлудили. Ладно, оставим её, как флудильню. Любит наш народ )))

В общем, вопрос такой.
Как правильно получить в отдельном потоке внутренний HTML код станиц в цикле?

Т.е. примерно так:
- загружаем первую страницу по первой ссылке;
- ждём пока загрузится;
- получаем внутренний HTML;
- из HTML получаем нужные ссылки;
- в цикле по этим ссылкам нужно получить другие страницы.

Всё в синхронном режиме.
...
Рейтинг: 0 / 0
01.09.2016, 13:40
    #39301912
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
Ты забыл про скрипты написать.

Если страница статическая - то ты её просто скачиваешь любой файло-качалкой и браузер тут не нужен вообще.

А вот если с сервера приходит какая-то заготовка и только потом страничка сама начинает создавать себя уже на клиенте, то какой-нибудь TJvURLGrabber уже впрямую не применим.
...
Рейтинг: 0 / 0
01.09.2016, 13:54
    #39301928
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
Нет.
Там почти голая страница + javascript и куча запросов к серверу
Я уже писал. Я не хочу изучать javascript, анализировать исходный код страниц. Не хочу изобретать велосипед.

Мне нужно лишь получать готовый HTML в синхронном режиме в цикле по ссылкам.
...
Рейтинг: 0 / 0
01.09.2016, 14:03
    #39301935
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
X11Нет.
Там почти голая страница + javascript и куча запросов к серверу
Я уже писал. Я не хочу изучать javascript, анализировать исходный код страниц. Не хочу изобретать велосипед.

Мне нужно лишь получать готовый HTML в синхронном режиме в цикле по ссылкам.

подозреваю, что dcef, как и IE, не поддерживает синхронный режим.
...
Рейтинг: 0 / 0
01.09.2016, 14:12
    #39301946
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
defecatorподозреваю, что dcef, как и IE, не поддерживает синхронный режим.
возможно, но там есть
CefSingleProcess : boolean
...
Рейтинг: 0 / 0
01.09.2016, 14:14
    #39301949
Barmaley57
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
X11, так а что мешает работать по схеме navigate - oncomplete?
...
Рейтинг: 0 / 0
01.09.2016, 14:18
    #39301951
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
X11defecatorподозреваю, что dcef, как и IE, не поддерживает синхронный режим.
возможно, но там есть
CefSingleProcess : boolean
Скорее, это похоже на то, что движок не будет создавать доп. процессы, а всё будет в одном.
И это не говорит за синхронность
...
Рейтинг: 0 / 0
01.09.2016, 14:24
    #39301963
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
Barmaley57X11, так а что мешает работать по схеме navigate - oncomplete?

пытаюсь её использовать, но пока не знаю, как правильней
нужно же как-то "ждать"

к примеру, есть 50 ссылок, которые нужно скачать каждую по очереди, а не как получится
см. 1ое сообщение:
...
Рейтинг: 0 / 0
01.09.2016, 14:25
    #39301965
Barmaley57
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
X11нужно же как-то "ждать"ну так флагом. Как же еще?
...
Рейтинг: 0 / 0
01.09.2016, 14:42
    #39301986
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
X11к примеру, есть 50 ссылок, которые нужно скачать каждую по очереди, а не как получится
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ReadLinks(List);
Navigate(List[0]);

procedure OnComplete()
begin
  ShowMessage('Loaded ' + List[0]);
  List.Delete(0);
  if List.Count > 0 then
    Navigate(List[0]);
end;
...
Рейтинг: 0 / 0
01.09.2016, 15:07
    #39302018
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
и к серверу будет сразу 50 обращений - так нельзя
...
Рейтинг: 0 / 0
01.09.2016, 15:35
    #39302043
Barmaley57
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
X11и к серверу будет сразу 50 обращений - так нельзяпочему сразу?
...
Рейтинг: 0 / 0
01.09.2016, 15:45
    #39302056
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
но ссылки же надо в цикле выполнить, по очереди, т.е. не загружать вторую, пока первая не загрузится полностью и из неё нельзя будет извлечь и обработать html

а если запустить цикл
Код: pascal
1.
2.
for i := 0 to count
  Chromium1.Load(StringList1[i]);



то цикл запустит первую ссылку, а не дожидаясь её загрузки, сразу начнёт загружать вторую, и т.д.
...
Рейтинг: 0 / 0
01.09.2016, 15:52
    #39302063
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
X11и к серверу будет сразу 50 обращенийС какого перепугу?
X11но ссылки же надо в цикле выполнить, по очереди, т.е. не загружать вторую, пока первая не загрузится полностью и из неё нельзя будет извлечь и обработать htmlНу и где здесь 19617576 нарушается это условие?
...
Рейтинг: 0 / 0
01.09.2016, 15:52
    #39302065
Barmaley57
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
X11, так Vasilisk же привел тебе пример кода. Где там "сразу"?
...
Рейтинг: 0 / 0
01.09.2016, 15:58
    #39302071
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
уже плохо к вечеру соображаю %)
...
Рейтинг: 0 / 0
01.09.2016, 19:28
    #39302283
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
TChromium не хочет работать без окна в потоке :(
...
Рейтинг: 0 / 0
02.09.2016, 12:06
    #39302598
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
X11TChromium не хочет работать без окна в потоке :(AllocateWnd + MessageQueue
...
Рейтинг: 0 / 0
02.09.2016, 12:20
    #39302615
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
Мало того, TChromium при Load создаёт ещё три окна зачем-то.
Я пока остановлюсь на TWebBrowser. TWebBrowser в потоке не чудовищно себя ведёт.


http://stackoverflow.com/questions/23181286/how-to-initialize-chromium-embedded-framework-3-in-another-thread
Because DCEF3 has this absolutely stupid multi process architecture.
...
Рейтинг: 0 / 0
02.09.2016, 14:16
    #39302716
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
_Vasilisk_X11к примеру, есть 50 ссылок, которые нужно скачать каждую по очереди, а не как получится
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ReadLinks(List);
Navigate(List[0]);

procedure OnComplete()
begin
  ShowMessage('Loaded ' + List[0]);
  List.Delete(0);
  if List.Count > 0 then
    Navigate(List[0]);
end;



сделаю несколько процедур OnComplete и буду по очереди подключать, т.к. скачивать приходится разное
...
Рейтинг: 0 / 0
02.09.2016, 16:18
    #39302813
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
X11,

задача, которую ты пытаешься сделать не такая простая, как кажется. стабильно отловить конец загрузки + рендер, да еще и в доп потоке - не так просто. но - пробуй, расскажешь )
...
Рейтинг: 0 / 0
02.09.2016, 16:26
    #39302822
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
да, в потоке веб браузер без окна работать не хочет

изучаю
http://prog-example.ru/twebbrowser/nevidimyj-brauzer-twebbrowser-v-potoke/

пока затык на строке
Command.ResultCallback := @ResultCallback;

[dcc32 Error] Variable required
...
Рейтинг: 0 / 0
02.09.2016, 16:27
    #39302824
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
makhaon,

Причем задача нерешаемая в принципе. Там на странице динамические запросы запускаются так же асинхронно, и поймать их можно, лишь внедрив свой джаваскрипт к тем событиям или отлавливая определенные изменения в DOMе.
...
Рейтинг: 0 / 0
02.09.2016, 16:30
    #39302825
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
В Delphi XE3 пример откомпилировался, браузер работает в потоке.
Пробую адаптировать для своей задачи.

Не для пятницы задача
...
Рейтинг: 0 / 0
02.09.2016, 16:38
    #39302832
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Chromium cef3 в отдельном потоке
Как вернуть результат из procedure ResultCallback(text: PWideChar);
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Chromium cef3 в отдельном потоке / 25 сообщений из 81, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]