Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

TwebBrowser и прочее. Подключаться к браузерам


ВладОшин ©   (29.06.20 12:07

Накопилось много всяких парсеров, которые работают с IHtmlDocument2
Который получается либо из компонента  TwebBrowser, либо через запуск самого браузера , через класс TInternetExplorer (SHDocVw), и соединение с ним.
Очень удобно парсить DOM через классы в unit MSHTML

Но вот всё больше сайтов начинают оказывать IE. Просто ничего, пустой экран белый или предупреждение - только Хром/FF нужен.

Вопрос.
Как бы что-то такое поставить/скачать, что бы было также просто достучаться до модели DOM загруженной странички?


ВладОшин ©   (29.06.20 12:16[1]

пробовал TChromium, 3 версия исходников с хабра.
Работает. Но странно, при закрытии AV вылетает. И не понял как DOM получить.

например, IE не заходит
https://vk.com

заходит и чистый экран на webim.ru (там статистика)
У них API есть, я его изучил, накатал тесты, а там меньше, чем менеджер видит из браузера. Написал в поддержку - сказали, все правильно, все по API не дают..

Нужен хороший метод парсинга в общем, по зарез )


megavoid ©   (30.06.20 16:48[2]

nodejs + selenium


ВладОшин ©   (03.07.20 08:51[3]


> megavoid ©   (30.06.20 16:48) [2]
> nodejs + selenium

Сложно? Сами пробовали?


ВладОшин ©   (03.07.20 09:04[4]

не, конечно, почитал сам. Но тут как.. хотелось бы всё это сделать как службу, и сразу заливать в БД mssql.. В общем, все как сейчас работает и только письма получать сайт1 - Ok|Error, сайт2 - Ok|Error

Можно так с selenium?


megavoid ©   (08.07.20 16:02[5]

Несложно, именно так и парсю сайты последние несколько лет. Только мне больше нравится puppeteer, а не selenium.
Node умеет mssql. Node, грубо - это как delphi, только javascript, а selenium или puppeteer - это как TChromeBrowser.
Единственно что, не уверен, умеет ли node делать службы.


ВладОшин ©   (14.01.21 18:32[6]

TChromium, 4 версия (CEF4)
Вроде нормально все встало, все сайты грузятся без проблем. Осталось за малым - научиться DOM оттуда выбирать )


KSergey ©   (15.01.21 10:15[7]

а я чета по-старинке все, html-текст получил - нашел нужные куски между нужными фрагментами "текста" - вытащил...
наверное не гибко там или еще что... но просто и надежно, да? и на любом языке какой знаешь


Styx ©   (15.01.21 18:03[8]

Сейчас половина сайтов в HTML-е ничего полезного не отправляют... Только ссылку на JavaScript, фактически, а информация динамически скриптом уже грузится...


ВладОшин ©   (16.01.21 10:07[9]


> KSergey ©   (15.01.21 10:15) [7]

А если сначала надо залогиниться? ) Причем, хитрый сайт вешает эвенты, что просто post отправить ему не катит. Нужно что бы в контроле буковки появлялись по очереди..
А еще есть, как  Styx пишет правильно, js и прочие аяксы.

И я понимаю, что все сводится то просто к трубе от сокета до сокета, где байтики гоняются туда-сюда, и можно просто так и делать - гонять байтики в правильных соглосованиях.. Но это же руки волосатые сразу станут, все это в ручном режиме гонять )


ВладОшин ©   (19.01.21 09:09[10]

в общем, DOM можно обходить как и ранее, получив html


procedure TForm1.btn1Click(Sender: TObject);
begin
 chrmwndw1.ChromiumBrowser.OnTextResultAvailable  := TextResultAvailable;
 chrmwndw1.ChromiumBrowser.RetrieveHTML(chrmwndw1.ChromiumBrowser.Browser.MainFra me);
end;

procedure TForm1.TextResultAvailable(Sender: TObject; const aText: ustring);
begin
 mmo1.Text :=  aText;
 chrmwndw1.ChromiumBrowser.OnTextResultAvailable := nil;
end;


Теперь надо понять как педалируются там кнопки и вводится текст в контролы )


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо