Вначале я даже лучше сделал: программа проходила по каждой ссылке на странице выдачи и получала имя автора. Затем я собирался сверять его с заданным именем. Так я мог узнать места всех картинок автора по конкретному запросу в отведенном количестве страниц. Но это оказалось непосильной задачей для меня и моего USB-модема.
Пришлось отказаться от задумки и упростить задачу.
Сейчас все работает так: ввожу поисковый запрос, ввожу ID картинки и программа ищет( а главное - находит) позицию файла. Теперь я знаю на каком месте в рейтинге моя картинка по конкретному поисковому запросу. Одно только плохо - зависает и глючит: после обработки 1-2-х страниц зависает (не отвечает) пока не выполнит все поставленные задачи. В конце, отработав цели и выдав результат, выдает ошибку.
Знаю, здесь много увлеченных и неравнодушных, взгляните на это:
Add(MainForm,2953706,21,0)
{
Width=770
Height=670
Position=1
}
Add(Edit,2268477,462,105)
{
@Hint=#15:Адресная строка|
@Color=16755370
Left=15
Top=45
Width=720
Height=30
Font=[@Arial Unicode MS,12,0,255,204]
Visible=1
Text=""
AddHint(71,-27,102,13,@Hint)
}
Add(HTTP_Get,9236709,462,154)
{
Wait=0
link(onDownload,13366773:doConvert,[])
link(URL,2268477:Text,[])
}
Add(StreamConvertor,13366773,511,161)
{
Mode=6
link(onResult,12391342:doSearch,[])
}
Add(BlockFind,12391342,560,161)
{
StartBlock="<script data-react-helmet="true" type="application/ld+json">"
EndBlock="</script>"
link(onSearch,4886994:doSearch,[])
}
Add(BlockFind,4886994,602,161)
{
IncludeBlock=1
StartBlock=""url":""
EndBlock="""
link(onSearch,6312086:doValue,[])
link(onEndSearch,4436292:In,[(646,174)(646,223)(618,223)(618,272)])
}
Add(RichEdit,3204267,924,217)
{
Left=25
Top=255
Width=710
Height=165
ScrollBars=2
link(Str,6312086:Value,[(930,207)(664,207)])
}
Add(Memory,6312086,658,161)
{
link(onData,3601484:doEvent1,[(702,167)(702,223)])
}
Add(Edit,70389,308,56)
{
@Hint=#16:Поисковый запрос|
@Color=11184895
Left=130
Top=5
Width=605
Height=40
Font=[@Arial Unicode MS,16,0,128,204]
Text="rural landscape"
AddHint(-164,-19,112,13,@Hint)
}
Add(StrCat,16602688,301,105)
{
@Hint=#62:Формируется адрес сайта с вшиванием в него поискового запроса|
Str1="https://www.shutterstock.com/search/"
link(onStrCat,2399675:doStrCat,[])
link(Str2,70389:Text,[])
AddHint(-78,78,200,26,@Hint)
}
Add(Button,5211380,189,105)
{
Left=15
Top=10
Width=110
Height=30
Font=[@Arial Unicode MS,16,0,128,204]
Caption=">>>"
link(onClick,13960487:doEvent1,[])
}
Add(StrCat,2399675,357,105)
{
Str2="?image_type=vector"
link(onStrCat,12913660:doStrCat,[])
link(Str1,16602688:Result,[(363,93)(347,93)(347,148)(307,148)])
}
Add(Hub,3601484,714,217)
{
OutCount=3
link(onEvent1,3204267:doAdd,[])
link(onEvent2,12763334:doOperation,[(790,230)(790,251)])
link(onEvent3,15216600:doEvent1,[(752,237)(752,342)])
}
Add(Label,9713937,875,245)
{
@Color=11184895
Left=475
Top=85
Width=30
Height=55
Font=[Arial Rounded MT Bold,33,0,128,0]
Caption="0"
}
Add(Math,12763334,805,245)
{
Op2=1
link(onResult,9713937:doText,[])
link(Op1,16595677:Var1,[(811,236)(848,236)(848,285)])
}
Add(Button,14063482,868,154)
{
@Color=11184895
Left=30
Top=215
Width=130
Height=25
Font=[@Arial Unicode MS,11,0,128,204]
Caption="Clear"
link(onClick,3204267:doClear,[(906,160)(906,230)])
}
Add(Label,9562325,1078,35)
{
@Color=11184895
Left=285
Top=105
Width=178
Height=25
Font=[@Arial Unicode MS,12,0,32896,204]
Caption="Картинок обследовано:"
}
Add(If_else,4206624,252,462)
{
Type=2
Op1=Real(0)
Op2=Real(0)
link(onTrue,11447291:doOperation,[])
link(onFalse,1062811:doStrCat,[(294,475)(294,531)])
link(Op1,3438475:Text,[(258,426)(188,426)])
link(Op2,16682673:Var2,[])
}
Add(Label,9090719,1036,35)
{
@Color=11184895
Left=295
Top=160
Width=171
Height=25
Font=[@Arial Unicode MS,12,0,32896,204]
Caption="Страниц обследовать:"
}
Add(Edit,3438475,182,357)
{
Left=485
Top=150
Width=75
Height=40
Font=[@Arial Unicode MS,16,0,128,204]
Text="50"
DataType=1
}
Add(StrCat,108939,406,462)
{
Str1="&page="
link(onStrCat,2110959:doWork1,[(452,468)])
link(Str2,11447291:Result,[(419,449)(359,449)(359,505)(314,505)])
}
Add(StrCat,1062811,329,525)
{
Str1="Всё!"
link(onStrCat,2110959:doWork3,[(452,531)])
}
Add(HubEx,2110959,448,483)
{
link(onEvent,5185405:In,[(492,489)(492,468)])
}
Add(Edit,6682021,259,357)
{
@Hint=#53:Номер страницы для формирования адреса след. страницы|
@Color=16755370
Left=25
Top=430
Width=75
Height=40
Font=[@Arial Unicode MS,16,0,128,204]
Visible=1
Text="1"
DataType=1
AddHint(4,-62,197,26,@Hint)
}
Add(LineBreak,696567,84,462)
{
Caption="Счет. стр."
Color=65280
link(Out,14422984:doEvent1,[])
Primary=[4436292,546,-196]
}
Add(Math,11447291,308,462)
{
Op2=1
link(onResult,9374681:doEvent1,[])
link(Op1,16682673:Var3,[(314,425)])
}
Add(GetDataEx,16682673,259,420)
{
link(Data,6682021:Text,[])
}
Add(Hub,9374681,371,462)
{
link(onEvent1,108939:doStrCat,[])
link(onEvent2,6682021:doText,[(394,475)(394,409)(251,409)(251,363)])
}
Add(StrCat,12913660,413,105)
{
link(onStrCat,2268477:doText,[])
link(Str1,2399675:Result,[(419,93)(402,93)(402,151)(363,151)])
link(Str2,8743677:Text,[])
}
Add(Edit,8743677,420,56)
{
@Hint=#54:Дополнение ссылки, типа: &page= + номер след. страницы|
@Color=16755370
Left=110
Top=430
Visible=1
Text=""
AddHint(72,-35,199,26,@Hint)
}
Add(LineBreak,15271187,308,28)
{
Caption="дополн. адр."
Color=12639424
link(Out,8743677:doText,[(403,34)(403,62)])
Primary=[5185405,196,434]
}
Add(Hub,13960487,259,105)
{
InCount=2
link(onEvent1,16602688:doStrCat,[])
link(onEvent2,9236709:doDownload,[(289,118)(289,160)])
}
Add(Hub,14422984,189,462)
{
link(onEvent1,4206624:doCompare,[])
link(onEvent2,12005414:In,[(224,475)(224,545)])
}
Add(LineBreak,13210404,161,154)
{
Caption="След. стр."
Color=-16777203
link(Out,13960487:doEvent2,[(242,160)(242,118)])
Primary=[12005414,84,385]
}
Add(Edit,7833261,980,399)
{
@Hint=#38:Место в рейтинге по указанному запросу|0:|
@Color=11184895
Left=290
Top=205
Width=265
Text="Место в рейтинге по указанному запросу"
AddHint(-82,60,186,39,@Hint)
}
Add(Edit,8343190,819,336)
{
@Hint=#53:Очередная полученая ссылка для вычленения ID картинки|
@Color=16755370
Left=200
Top=430
Width=215
Visible=1
Text="Ссылки на картинки"
AddHint(-293,-41,190,26,@Hint)
}
Add(Hub,15216600,777,336)
{
link(onEvent1,8343190:doText,[])
link(onEvent2,7439446:doExec,[(807,349)(807,405)])
}
Add(RE_Search,7439446,819,399)
{
ModifierR=1
link(onMatch,2906561:doStrCat,[])
link(SourceStr,8343190:Text,[])
link(Expression,7546410:Text,[(832,383)(874,383)])
}
Add(StrCat,2906561,931,399)
{
Str2="..."
link(onStrCat,7833261:doText,[])
link(Str1,16595677:Var3,[(937,285)])
}
Add(Edit,7546410,868,336)
{
@Hint=#19:ID искомой картинки|
@Color=11184895
Left=150
Top=85
Width=160
Text="1718820670"
AddHint(108,-36,123,13,@Hint)
}
Add(GetDataEx,16595677,875,280)
{
link(Data,9713937:Caption,[])
}
--- Добавлено в 2020-05-04 22:35:53
Там много пояснительных подсказок, чтоб было проще разобраться. Механизм совсем небольшой.