Что нового

[Сеть, интернет] Получение значение тега заданные через параметры

SemEMP

Знающий
Сообщения
42
Репутация
7
Необходимо сделать что-то подобие
Код:
$a=$oElement.type
или
Код:
$a=$oElement.classname
или всё, что угодно(всё что может встретиться на сайте) . Но всё это необходимо оформить в виде
Код:
$a=$oElement.$tag
где
Код:
$tag='type'
и т. д.

Конструкция в виде
Код:
$a=_IEPropertyGet($oElement,$tag)
не работает - в виду узкой специализации функции
Код:
_IEPropertyGet()


То есть надо вытаскивать значение тегов через теги, заданные параметром. :scratch:
Использовать хочу тут
Код:
#include <IE.au3>
#include <Array.au3>
#include <String.au3>
#include <INet.au3>
#include <Excel.au3>
#include <GUIConstants.au3>
;~ $oIE = _IEAttach ("Сайт")
;~ $oFrame = _IEFrameGetObjByName($oIE, 'Фрейм')

$oIE = _IECreate('http://autoit-script.ru/index.php/topic,8613.msg58291/topicseen.html#new')
$oFrame=$oIE
dim $a[1][15]
dim $name[1]
dim $namemax=0
$oElements = _IETagNameGetCollection ($oFrame,'div')
;~ $oElements = _IETagNameAllGetCollection ($oFrame)
$ia=0
For $oElement In $oElements
    _IEErrorHandlerRegister ("MyErrFunc")
    $sHTML = $oElement.outerHTML
    $pat='\<(.*?)\>'
    $tt1=StringRegExp($sHTML,$pat,3)
    if @error Then ContinueLoop
    $pat='\s([^\s.]*?)='
    $tt=StringRegExp($tt1[0],$pat,3)
    if @error Then ContinueLoop
    if $namemax=0 Then
        $name=$tt
        $namemax=UBound($tt)
    Else
        _ArrayConcatenate($name,$tt)
        $name=_ArrayUnique ($name)
        _ArrayReverse($name)
        ReDim $name[UBound($name)-1]
        _ArrayReverse($name)
    EndIf
    ReDim $a[$ia+1][UBound($name)]
    for $k=0 to UBound($name)-1
        $a[$ia][$k]=_IEPropertyGet($oElement,$name[$k])
;~      $a[$ia][$k]=$oElement.$name[$k]
    Next
    $ia+=1
Next
for $k=0 to UBound($name)-1
    $a[0][$k]=$name[$k]
Next
_ArrayDisplay($a)

Func MyErrFunc()
    ; Important: the error object variable MUST be named $oIEErrorHandler

EndFunc  ;==>MyErrFunc
 
Автор
S

SemEMP

Знающий
Сообщения
42
Репутация
7
Сам и решил, можно через
Код:
StringRegExp

Код:
$sHTML = $oElement.outerHTML

	$pat='\<(.*?)\>'
	$tt1=StringRegExp($sHTML,$pat,3)

;~ 	ClipPut($sHTML)
	if @error Then ContinueLoop
	_ArrayDisplay($tt1)
	$pat='\s([^\s.]*?)=[^\"]'
	$tt=StringRegExp($tt1[0],$pat,3)

	$pat='=([^"].*?)[\s\>]'
	$Value=StringRegExp($tt1[0]&'>',$pat,3)
 
Верх