Что нового

Поиск картинок в яндексе и получение прямой ссылки

cobain31

Новичок
Сообщения
10
Репутация
0
Приветствую! Похожих тем на удивление не нашёл, поэтому прошу помощи, ибо сам бьюсь над решением второй день и ничего не получается.
Задача - осуществить поиск картики в яндексе по текстовому запросу (машина), он предложит несколько вариантов, я нажимаю на понравившийся, и скрипт должен получить прямую ссылку на нажатую картинку. При выборе картинки появляется кнопка "Открыть" в которой есть ссылка на картинку, вот её код:
<a class="button2 button2_theme_action button2_size_m button2_type_link button2_pin_brick-clear button2_side_left sizes__download i-bem button2_js_inited" data-bem="{&quot;button2&quot;:{&quot;_tabindex&quot;:&quot;0&quot;,&quot;_url&quot;:&quot;/&quot;}}" tabindex="0" target="_blank" href="http:// img3.goodfon.ru/original/960x854/4/76/delorean-dmc-12-back-to-the-2276.jpg"><i class="icon icon_type_download icon_size_s button2__icon" aria-hidden="true"></i>Открыть <span class="sizes__width">960</span>×<span class="sizes__height">854</span></a>

Надо получить ссылку на картинку, вот имеющийся код, но он не находит класс кнопки "Открыть"

Код:
#include <IE.au3>
#include <MsgBoxConstants.au3>

Local $oIE=_IECreate('https://yandex.ru/images/search?text=машина')
_IELoadWait($oIE)
Sleep (5000) ;здесь пользователь тыкает на нужную картинку

Local $oInputs = _IETagNameGetCollection($oIE, "button")
Local $sTxt = ""
For $oInput In $oInputs
    $sTxt &= $oInput.classname & @CRLF
Next
ConsoleWrite( "         Types :" & @CRLF & $sTxt)

_IEQuit($oIE)


Подскажите куда копать, или может есть более изящное решение?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Код:
$oLink = $oIE.document.querySelector('a.sizes__download')
 
Автор
C

cobain31

Новичок
Сообщения
10
Репутация
0
alex33 сказал(а):
Код:
$oLink = $oIE.document.querySelector('a.sizes__download')

Ничего не находит. Я вот еще о чем подумал - переменная $oIE ж не обновляется после того как я нажал на нужное мне изображение, и соответственно ничего не находит. А как её обновить найти не могу :(
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
cobain31 сказал(а):
о чем подумал - переменная $oIE ж не обновляется после того как я нажал на нужное мне изображение, и соответственно ничего не находит. А как её обновить найти не могу :(
Можно через
Код:
_IEAttach ( )
 
Автор
C

cobain31

Новичок
Сообщения
10
Репутация
0
alex33 сказал(а):
Можно через
Код:
_IEAttach ( )

Пробовал, не работает:
Код:
#include <IE.au3>
#include <MsgBoxConstants.au3>

Local $oIE=_IECreate('https://yandex.ru/images/#!/images/search?text=%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0')
_IELoadWait($oIE)
Sleep (10000) ;здесь пользователь тыкает на нужную картинку
$hWnd = WinWait('[CLASS:IEFrame]')
$oIE =_IEAttach($hWnd, 'HWND')
Sleep (5000)
$oLink = $oIE.document.querySelector('a.sizes__download')
ConsoleWrite(@CRLF & "$oLink = " & $oLink & @CRLF)


Выхлоп:
Код:
$oLink =
Вроде бы элементарная задачка, а такие заморочки :scratch:
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
cobain31
Код:
ConsoleWrite(@CRLF & "IsObj($oLink) = " & IsObj($oLink) & @CRLF & "$oLink.href = " & $oLink.href & @CRLF)
ConsoleWrite($oLink.outerHTML &@CRLF)
 
Автор
C

cobain31

Новичок
Сообщения
10
Репутация
0
alex33 сказал(а):
cobain31
Код:
ConsoleWrite(@CRLF & "IsObj($oLink) = " & IsObj($oLink) & @CRLF & "$oLink.href = " & $oLink.href & @CRLF)
ConsoleWrite($oLink.outerHTML &@CRLF)
:shok: Вот оно че, оказывается. Спасибо! :beer:
 
Верх