Вверх ↑
Этот топик читают: Гость
Ответов: 537
Рейтинг: 14
#1: 2017-01-30 22:26:41 ЛС | профиль | цитата
Сделал небольшой пример. Нужно найти в гугл картинках ссылку на картинку которая отображается. Целый день составлял блоки, но так и неполучилось. Почему-то в блоке когда 3, бывает 2 картинки и они всегда в разных местах, блоки в коде HTML совершенно однаковые, не получается выделить ту ссылку, которая сейчас отображается в окошке. Ниже мой пример и посмотрите IC может не так сделал. Странно но это работает.
Add(MainForm,7724301,35,140)
{
Width=1040
Height=726
WindowsState=2
link(onCreate,11359994:CreateForm,[])
}
Add(WebBrowser,14947695,217,77)
{
Width=794
Height=663
URL=""
Silent=0
Point(PHandle)
Point(Handle)
link(onProgress,16664408:doCase,[])
}
Add(Memo,16137071,490,196)
{
Left=800
Width=220
Height=665
ScrollBars=2
}
Add(InlineCode,3505641,231,196)
{
WorkPoints=#6:Parsel|
EventPoints=#7:CurText|
DataPoints=#2:ph|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug,ActiveX,KOLSHDocVw;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: ph:THI_Event;|22: CurText:THI_Event;|0:|47: procedure Parsel(var dt:TData; index:word);|0:|5: end;|0:|14:implementation|0:|4:type|31: TKOLWebBrowser = PWebBrowser;|31: PKOLWebBrowser = PWebBrowser;|0:|29:procedure THiAsmClass.Parsel;|16:var pc:PControl;|15: txt:string;|5:begin|36: pc := PControl(ToIntegerEvent(ph));|81: txt := PKOLWebBrowser(pc).OleObject.Document.all.tags('body').Item(0).outerHTML;|26: _hi_OnEvent(CurText,txt);|4:end;|0:|4:end.|
link(CurText,2163117:doSearch,[])
link(ph,6183998:Var2,[])
}
Add(BlockFind,2163117,280,196)
{
@Hint=#3:Все|
StartBlock="id="i3589""
EndBlock="id="irc_bgl"
Point(onNotFind)
Point(doStop)
link(onSearch,15179477:doSearch,[])
AddHint(-4,38,34,13,@Hint)
}
Add(BlockFind,15179477,343,196)
{
@Hint=#12:url картинки|
IncludeBlock=1
StartBlock="i3596" href=""
EndBlock="""
link(onSearch,16745382:doStrCat,[])
AddHint(-16,38,76,13,@Hint)
}
Add(StrCat,16745382,420,196)
{
Str2="\r\n\r\n"
link(onStrCat,16137071:doAdd,[])
}
Add(InlineCode,11359994,140,154)
{
@Hint=#13:Клик google 1|
WorkPoints=#10:CreateForm|3:Zap|
DataPoints=#1:h|3:url|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|61:uses kol,Share,Debug,windows,ActiveX,KOLSHDocVw,Win,ShellApi;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|16: wb:PControl;|9: public|16: h:THI_Event;|18: url:THI_Event;|4: |53: procedure CreateForm(var Data:TData; index:word);|46: procedure Zap(var Data:TData; index:word);|4: |5: end;|0:|15:implementation |0:|4:type|31: TKOLWebBrowser = PWebBrowser;|32: PKOLWebBrowser = PWebBrowser; |0:|33:procedure THiAsmClass.CreateForm;|5:begin|35: wb := PControl(ToIntegerEvent(h));|50: PKOLWebBrowser(WB).Navigate(ToStringEvent (url));|4:end;|0:|26:procedure THiAsmClass.Zap;|5:begin|4: try|90: PKOLWebBrowser(WB).OleObject.Document.getElementsByClassName('rg_ic rg_i').item(0).Click;|7: Except|5: end;|4:end;|0:|4:end.|
link(h,3413930:Var1,[(146,138)])
link(url,8928543:Value,[])
AddHint(-24,31,84,13,@Hint)
}
Add(Memory,8928543,147,98)
{
Default=String(https://www.google.com.ua/search?as_st=y&tbm=isch&as_q=%D0%BA%D0%BE%D1%82&as_epq=&as_oq=&as_eq=&imgsz=&imgar=&imgc=&imgcolor=&imgtype=&cr=&as_sitesearch=&safe=images&as_filetype=&as_rights=&gws_rd=ssl#gws_rd=ssl&imgrc=_)
}
Add(GetDataEx,3413930,231,133)
{
link(Data,14947695:PHandle,[])
}
Add(Hub,12228464,112,217)
{
OutCount=4
link(onEvent1,16137071:doClear,[(287,223)(287,209)])
link(onEvent2,14884294:CreateForm,[])
link(onEvent3,14884294:Zap,[])
link(onEvent4,7036232:doEvent1,[(138,244)(138,265)(93,265)(93,286)])
}
Add(InlineCode,14884294,140,224)
{
@Hint=#13:Клик google 2|
WorkPoints=#10:CreateForm|3:Zap|
DataPoints=#1:h|3:url|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|61:uses kol,Share,Debug,windows,ActiveX,KOLSHDocVw,Win,ShellApi;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|16: wb:PControl;|9: public|16: h:THI_Event;|18: url:THI_Event;|4: |53: procedure CreateForm(var Data:TData; index:word);|46: procedure Zap(var Data:TData; index:word);|4: |5: end;|0:|15:implementation |0:|4:type|31: TKOLWebBrowser = PWebBrowser;|32: PKOLWebBrowser = PWebBrowser; |0:|33:procedure THiAsmClass.CreateForm;|5:begin|35: wb := PControl(ToIntegerEvent(h));|50: PKOLWebBrowser(WB).Navigate(ToStringEvent (url));|4:end;|0:|26:procedure THiAsmClass.Zap;|5:begin|4: try|70: PKOLWebBrowser(WB).OleObject.Document.getElementById('irc_ra').click;|7: Except|5: end;|4:end;|0:|4:end.|
link(h,6183998:Var1,[(146,166)])
AddHint(8,33,84,13,@Hint)
}
Add(Case,16664408,266,98)
{
Value=Integer(0)
link(onTrue,2311627:doTimer,[])
}
Add(Timer,2311627,308,105)
{
Interval=3000
Enable=1
AutoStop=1
link(onTimer,566195:doData,[])
}
Add(ChangeMon,3152591,406,105)
{
link(onData,3902863:doEvent1,[])
}
Add(DoData,566195,357,105)
{
Data=Integer(1)
link(onEventData,3152591:doData,[])
}
Add(Button,16401675,56,217)
{
Left=5
Top=5
Caption="Ссылка"
link(onClick,12228464:doEvent1,[])
}
Add(GetDataEx,6183998,231,161)
{
link(Data,3413930:Var2,[])
}
Add(Timer,328910,140,280)
{
Enable=1
AutoStop=1
link(onTimer,3505641:Parsel,[(202,286)(202,202)])
}
Add(Hub,7036232,105,280)
{
InCount=2
OutCount=1
link(onEvent1,328910:doTimer,[])
}
Add(Hub,3902863,511,105)
{
link(onEvent1,11359994:Zap,[(537,111)(537,139)(128,139)(128,167)])
link(onEvent2,7036232:doEvent2,[(543,118)(543,336)(93,336)(93,293)])
}
Начало и конец блока брал из кода по ссылке например https://www.google.com/imgres?imgurl=https%3A%2F%2Fi.ytimg.com%2Fvi%2FiTX-5EuBtEM%2Fmaxresdefault.jpg&imgrefurl=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DiTX-5EuBtEM&docid=K8AcpfMJ8Uw0IM&tbnid=epPWHM5iLOJPDM%3A&vet=1&w=1280&h=720&safe=images&bih=663&biw=664&as_q=%D0%BA%D0%BE%D1%82&ved=0ahUKEwiQ26DG0-rRAhWGKJoKHf44Cy4QMwgvKAAwAA&iact=mrc&uact=8, там видно <body ... </body>, к концу дня выяснил, что это самое лучшее. Если пытаться искать точное начало и конец блока где находится ссылка, то там вообще бред, однаковые блоки с разными ссылками появляются и исчезают, так не отловить ссылку которая отобрадается в окошке.

Удалял с получившегося блока картинки которые идут после "Похожие картинки" и заканчиваются "Изображения могут быть защищены авторским правом",
Add(RE_Replace,15031791,637,42)
{
Expression="<div class="_B3l">(.*)<\/span><span class="_r3"><a tabindex="-1" class="irc_fdbk i5877"
}
это самое подробное выражение. Но все равно, другие картинки откудато лезут, то одна, то две. Еще с помощью подробной регулярки хотел найти нужный, точный блок. То-же самое. Другие ссылки наверно для того, чтобы, может пользотель захочет посмотреть картинку, вперед или назад и она очень быстро загрузится. Ведь браузер понимает, что нужно показать в окошке. Как узнать точную ссылку которая будет при нажатии кнопки "В полном размере". Наверно задача сложная. Любые соображения пишите.

Редактировалось 15 раз(а), последний 2017-01-31 02:26:10
карма: 4

0
vip
#1.1контекстная реклама от партнеров
1
Сообщение
...
Прикрепленные файлы
(файлы не залиты)