Что нового

IE. Импортировать данные из кода страницы в скрипт.

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Доброго времени суток. Имеется вот такой вот код на странице:
Код:
<ul class="wallet">

<li class="tugriki-block" title="Монет: 2063">
<b class="tugriki"></b>
2,063</li>
<li class="ruda-block" title="Руды: 6">
<b class="ruda"></b>
6</li>
<li class="med-block" title="Меда: 0">
<b class="med"></b>
<a href="/stash/">0</a>
</li>
</ul>
В нем чётко указаны 3 числа: 2,063, 6 и 0. Как импортировать их в скрипт для дальнейшего использования? :(.
Научился работать через вот такие штуки: <span id="currenthp"> но в том коде параметр id отсутствует :'(
 

beve

Осваивающий
Сообщения
104
Репутация
31
Код:
$aResultat=StringRegExp($sText,'(?i)(?s).*?"tugriki-block" title="Монет: (\d+)?">.*?"ruda-block" title="Руды: (\d+)?">.*?"med-block" title="Меда: (\d+)?">.*', 3)


или так:
Код:
$sResultat=StringRegExpReplace($sText,'(?i)(?s).*?"tugriki-block" title="Монет: (\d+)?">.*?"ruda-block" title="Руды: (\d+)?">.*?"med-block" title="Меда: (\d+)?">.*',"\1----\2---\3")
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А как мне в $sText получить текст для обработки?
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Belfigor [?]
А как мне в $sText получить текст для обработки?
Код:
$sFile='1.htm'
$sText=FileRead  ($sFile)




Добавлено:
Сообщение автоматически объединено:

Еще вариант :
Код:
#Include<Array.au3>
$sFile='1.htm'
$sText=FileRead  ($sFile)
MsgBox(0,'$sText',$sText)
$sPattern='(?si)<li.+?>
(?:<a.+?>)?(.+?)(?:</a>)?\r?\n?</li>'
$aRet=StringRegExp ($sText,$sPattern,3)

_ArrayDisplay($aRet)
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А напрямую со страницы это сделать нельзя? Я пробовал использовать вот эту функцию: _IEBodyReadHTML . В итоге в переменную я получал исходный код страницы, но только приведенный beve примеры не работал :(
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Или через IE :
Код:
#Include<IE.au3>
$sFile='1.htm'
$oIE=_IECreate (@ScriptDir & '\' & $sFile, 1,0)
$oLIs = _IETagNameGetCollection ($oIE, "LI")
For $oLI In $oLIs
	MsgBox(0, '',StringReplace ( $oLI.innertext,@CRLF,'' ));без тегов :

Next



Добавлено:
Сообщение автоматически объединено:

Belfigor [?]
А напрямую со страницы это сделать нельзя? Я пробовал использовать вот эту функцию: _IEBodyReadHTML . В итоге в переменную я получал исходный код страницы, но только приведенный beve примеры не работал
_IEBodyReadHTML пребразует исходный текст в :
Код:
<UL class=wallet>
<LI class=tugriki-block title="Монет: 2063"><B class=tugriki></B>
2,063 
<LI class=ruda-block title="Руды: 6"><B class=ruda></B>
6 
<LI class=med-block title="Меда: 0"><B class=med></B>
<A href="/stash/">0</A> </LI></UL>

Если надо то можно и для него составить Pattern .



Добавлено:
Сообщение автоматически объединено:

Код:
$sPattern='(?si)<LI.+?>
(?:<.+?>)?(.+?)(?:\r\n|</)'
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Belfigor [?]
Как импортировать их в скрипт для дальнейшего использования?
Код:
#include <IE.au3>
Dim $i, $sResult, $sUrl = "http://"
Dim $aData[1]
$oIE = _IECreate($sUrl)
$cLI = _IETagNameGetCollection($oIE, "li")

For $oLI In $cLI
	If $oLI.title <> "" Then
		$i += 1	
		ReDim $aData[$i]
		$aData[$i-1] = $oLI.title
	EndIf
Next

If $aData[0] <> "" Then
	For $i = 0 To UBound($aData) -1
		$sResult &= $aData[$i] & @CRLF
	Next
	MsgBox(0,"", $sResult)
EndIf
 
Верх