Вверх ↑
Ответов: 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