timsky
Осваивающий
- Сообщения
- 93
- Репутация
- 28
Столкнулся с головоломкой одной, уже часа 4 угрохал на нее. Нужно получить список всех УРЛов на странице, причем DOM объекты.
Затык возник при работе с iframe на этом сайте: keywordaccess.com
_IEFrameGetCollection(), _IELinkGetCollection и _IEIsFrameSet() здесь вообще бессильны. Они на этой странице в лучшем случае выдергивают только линк на лого (gif) и все... как я только не пробовал - бесполезно.
Нашел выход _IETagNameAllGetCollection() и _IETagNameGetCollection():
Этот скрипт выдергивает основную часть УРЛов, но не может никак зацепить iFrame :(
То, что можно отдельно загрузить страницу /advertisers/guides-iframe.html я знаю, но нужно получить доступ к объектам именно с морды. Но как???
Затык возник при работе с iframe на этом сайте: keywordaccess.com
_IEFrameGetCollection(), _IELinkGetCollection и _IEIsFrameSet() здесь вообще бессильны. Они на этой странице в лучшем случае выдергивают только линк на лого (gif) и все... как я только не пробовал - бесполезно.
Нашел выход _IETagNameAllGetCollection() и _IETagNameGetCollection():
Код:
#include <IE.au3>
#include <Array.au3>
$oIE = _IECreate('keywordaccess.com')
$found = 0
Dim $aLinks[$found + 1][2] ; Создаем массив найденных линков
$aLinks[0][0] = $found
$oLinks = _IETagNameGetCollection($oIE, 'a')
For $oLink In $oLinks
; MsgBox(0, 'Tagname: ' & $oLink.tagname, 'InnerText: ' & $oLink.InnerText & @CRLF & 'Href: ' & $oLink.href)
$found += 1
ReDim $aLinks[$found + 1][2] ; Прибавляем в массив
$aLinks[0][0] = $found ; Изменяем итоговое кол-во найденных линков
$aLinks[$found][0] = $oLink.href ; Сохраняем URL найденной ссылки
$aLinks[$found][1] = $oLink ; Сохраняем Объект найденной ссылки
Next
_ArrayDisplay($aLinks)
; А тепер попробуем выдрать УРЛы из iFrame
$oElements = _IETagNameAllGetCollection($oIE)
For $oElement In $oElements
If StringInStr($oElement.tagname, 'frame') Then
;ClipPut($oElement.src)
MsgBox(0, 'Element Info', 'Tagname: ' & $oElement.tagname & @CRLF & @CRLF & 'SRC: ' & $oElement.src & @CRLF & @CRLF & 'OuterHTML: ' & $oElement.OuterHTML)
$oLinks = _IETagNameGetCollection($oElement, 'a')
For $oLink In $oLinks
MsgBox(0, 'Tagname: ' & $oElement.tagname, 'InnerText: ' & $oElement.InnerText & @CRLF & 'Href: ' & $oElement.href)
$found += 1
ReDim $aLinks[$found + 1][2] ; Прибавляем в массив
$aLinks[0][0] = $found ; Изменяем итоговое кол-во найденных линков
$aLinks[$found][0] = $oLink.href ; Сохраняем URL найденной ссылки
$aLinks[$found][1] = $oLink ; Сохраняем Объект найденной ссылки
Next
EndIf
Next
_ArrayDisplay($aLinks)
; НИФИГА!!!
Этот скрипт выдергивает основную часть УРЛов, но не может никак зацепить iFrame :(
То, что можно отдельно загрузить страницу /advertisers/guides-iframe.html я знаю, но нужно получить доступ к объектам именно с морды. Но как???