Вверх ↑
Этот топик читают: Гость
Этот топик был перемещен из раздела "Помощь по среде"
Ответов: 1
Рейтинг: 0
#1: 2017-10-14 20:42:48 ЛС | профиль | цитата
Здравствуйте.
Возникла необходимость брать переменные данные (график) со страницы в браузере и эмулировать нажатие кнопок на этой же странице. Сперва решил потренироваться на котиках сделать что-нибудь попроще и слепил минипрограмму, которая берёт значение времени с сайта time100.ru и выводит его в отдельном окошке. Реализовал это, как в учебном видео по созданию парсера сайтов: страница постоянно подгружается по HTTP-протоколу, преобразуется в строку и поисковик выводит нужную строчку на просмотр.

Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,84,126)
{
Width=302
Height=186
link(onActivate,9182511:doWork2,[])
}
Add(Convertor,13776992,278,133)
{
Mode=11
link(onResult,13334284:doSearch,[])
}
Add(BlockFind,13334284,364,133)
{
IncludeBlock=1
StartBlock=""Asia/Irkutsk" data-format="‹span›‹strong›%H%:%i%:%s‹/strong›‹/span›"›"
EndBlock="‹/div›"
link(onSearch,13566133:doText,[])
}
Add(Label,13566133,448,133)
{
Left=35
Top=25
Width=215
Height=90
Font=[Times New Roman,36,1,0,0]
Caption=""
}
Add(HTTP_Get,14075340,194,126)
{
URL="https://time100.ru"
link(onDownload,13776992:doConvert,[])
link(onStop,9182511:doWork3,[(238,153)(238,183)(151,183)])
}
Add(HubEx,9182511,147,126)
{
link(onEvent,14075340:doDownload,[])
}

Кто не в курсе, надо этот код скопипастить в окно редактора HiAsm, он там в кубики преобразуется.
Получилась "программа", расходующая приличный трафик и работающая с заметной задержкой - время в окне отстаёт примерно на полсекунды по сравнению со значением в браузере.

Но если эта страница может быть открыта у вас в браузере, нельзя ли брать переменные непосредственно из браузера (какой-нибудь "Оперы" или "Файрфокс")? Имеется встроенный компонент "web-браузер. Повторил на его основе обозреватель из видео.

Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,140,175)
{
Width=1274
Height=617
}
Add(WebBrowser,2111174,315,182)
{
Top=50
Width=1256
Height=522
Align=5
URL=""
link(onStatus,16388206:doText,[(373,202)(373,188)])
}
Add(ChildPanel,11963767,217,182)
{
link(onEvent1,2111174:doNavigate,[])
link(onEvent2,2111174:doRefresh,[])
link(onEvent3,2111174:doBack,[])
link(onEvent4,2111174:doForward,[])
}
BEGIN_SDK
Add(EditMulti,11795332,21,21)
{
EventCount=4
}
Add(Panel,3835209,35,105)
{
Width=1256
Align=2
}
Add(Edit,12417527,161,49)
{
Left=2
Top=28
Width=1252
Align=4
Text="http://"
link(onEnter,11795332:onEvent1,[(257,62)(257,27)])
}
Add(Button,12968656,161,133)
{
Left=5
Top=5
Width=115
Caption="Назад"
link(onClick,11795332:onEvent3,[(257,139)(257,41)])
}
Add(Button,1227521,161,175)
{
Left=125
Top=5
Width=115
Caption="Вперёд"
link(onClick,11795332:onEvent4,[(257,181)(257,48)])
}
Add(Button,1328616,161,91)
{
Left=270
Top=5
Width=135
Caption="Обновить"
link(onClick,11795332:onEvent2,[(257,97)(257,34)])
}
END_SDK
Add(StatusBar,16388206,399,182)
{
Panels=#11:Статус=1000|
link(Panel,7767531:Value,[(412,166)(405,166)])
}
Add(Memory,7767531,399,119)
{
Default=Integer(0)
}

Можно ли брать переменные из него?
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 253
Рейтинг: 0
#2: 2020-09-30 10:43:48 ЛС | профиль | цитата
Можно попробовать вот так вот.
Add(MainForm,2953706,70,56)
{
Width=285
Height=135
link(onCreate,3793667:doDownload,[])
}
Add(HTTP_Get,2715137,217,140)
{
URL="https://time100.ru/"
link(onDownload,5022140:doConvert,[])
}
Add(BlockFind,5641130,371,147)
{
IncludeBlock=1
StartBlock="<div class="time" data-tz="Europe/Moscow" data-format="<span>%H%:%i%:%s</span>">"
EndBlock="</div>"
link(onSearch,741835:doEvent1,[])
}
Add(Label,1158924,511,147)
{
Left=25
Top=20
Width=125
Height=30
}
Add(Hub,741835,420,147)
{
link(onEvent1,1158924:doText,[])
link(onEvent2,5546059:doTimer,[(472,160)(472,195)(86,195)(86,146)])
}
Add(Convertor,5022140,287,147)
{
Mode=11
link(onResult,10409307:doCharset,[])
}
Add(Charset,10409307,329,147)
{
Type=7
link(onCharset,5641130:doSearch,[])
}
Add(Timer,5546059,161,140)
{
Interval=100
AutoStop=1
link(onTimer,2715137:doDownload,[])
}
Add(HTTP_Get,3793667,224,70)
{
URL="https://time100.ru/"
link(onDownload,7661136:doConvert,[])
}
Add(BlockFind,4423503,378,77)
{
IncludeBlock=1
StartBlock="<div class="time" data-tz="Europe/Moscow" data-format="<span>%d %xF %Y года, %l</span>">"
EndBlock="</div>"
link(onSearch,10289101:doReplace,[])
}
Add(Convertor,7661136,294,77)
{
Mode=11
link(onResult,12237034:doCharset,[])
}
Add(Charset,12237034,336,77)
{
Type=7
link(onCharset,4423503:doSearch,[])
}
Add(Label,4862930,595,77)
{
Left=25
Top=55
Width=125
Height=30
}
Add(Replace,10289101,420,77)
{
SubStr="<b>"
link(onReplace,3584794:doReplace,[])
}
Add(Replace,3584794,462,77)
{
SubStr="</b>"
link(onReplace,9423214:doReplace,[])
}
Add(Replace,9423214,504,77)
{
SubStr="<u>"
link(onReplace,14428488:doReplace,[])
}
Add(Replace,14428488,546,77)
{
SubStr="</u>"
link(onReplace,4862930:doText,[])
}


Редактировалось 1 раз(а), последний 2020-09-30 10:48:14
карма: 0

0
2
Сообщение
...
Прикрепленные файлы
(файлы не залиты)