Что нового

[Автоматизация] Поиск меняющегося значения в html файле

yuran2

Хочу все уметь
Сообщения
38
Репутация
0
Version 3.3.6.1

нужно из html файла вывести в gui окно меняющиеся данные , количество строк в файле меняется

пример :

.....
<td valign="top"><img src="/img//weather/сумка/sumka.gif" title="сумка "
class="t_black"
style="cursor:blum:ointer;"
onClick="JavaScript:shok:pen_art_window('/objectInfo.jsp?name=sumka')">
</td>
<td valign="top"> <b>Свойства:</b>
<nobr>Масса: <b>0.9</b> кг.</nobr>

..........
Примечания:
нужно найти и скопировать в gui меняющуюся массу 0.9. слова масса и свойства повторяются в файле

- характеристики перса в игре передовая нужно считывать массу и цену гранатной сумки
вот пару страниц http://www.peredovaya.ru/hero.jsp?hero=Variag
или http://www.peredovaya.ru/hero.jsp?hero=sens97
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Дайте ссылку на страницу где нужно найти.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
#include <ie.au3>
#include <array.au3>

$sURL = 'http://www.peredovaya.ru/hero.jsp?hero=Variag'
;~ $sURL = 'http://www.peredovaya.ru/hero.jsp?hero=sens97'
$oIE = _IECreate($sURL)
$oDIV = _IEGetObjById($oIE, 'div_ammo')
If @error <> 0 Then
	MsgBox(0, 0, 'Не нашли div_ammo')
	Exit
EndIf
$sHTML = _IEPropertyGet($oDIV, 'outerHTML')
$sPattern = '(?sim)class=t_black title="?([^"]+?)"?\sonclick.*?Масса.*?>([0-9./]+)<'
$aA = StringRegExp($sHTML, $sPattern, 3)
_ArrayDisplay($aA)
_IEQuit($oIE)
 
Автор
Y

yuran2

Хочу все уметь
Сообщения
38
Репутация
0
спасибо axlwor :smile:
немного подправил для себя
Код:
#include <ie.au3>
#include <array.au3>

$sURL = 'http://www.peredovaya.ru/hero.jsp?hero=Variag'

$oIE = _IECreate($sURL,0,0)
_IELoadWait ($oIE)
$sHTML =_IEDocReadHTML ( $oIE )
;$oDIV = _IEGetObjById($oIE, 'div_ammo')
;If @error <> 0 Then
  ;  MsgBox(0, 0, 'Не нашли div_ammo')
   ;Exit
;EndIf
;$sHTML = _IEPropertyGet($oDIV, 'outerHTML')
$sPattern = '(?sim)class=t_black title="контрабандная сумка для гранат"?\sonclick.*?Масса.*?>([0-9./]+)<'

$aA = StringRegExp($sHTML, $sPattern, 3)
 If @error <> 0 Then
   MsgBox(0, 0, 'Не нашли контрабандную сумку для гранат')
   Exit
EndIf
  MsgBox(0, "масса сумки ", $aA [0]& " кг")
;_ArrayDisplay($aA)
_IEQuit($oIE)

1 ) нужно еще достать значение цены сумки , строка не меняется кроме 10,5 ZRM
- <tr><td colspan='4' height='19'><table width='100%' cellspacing='0' cellpadding='0' background='/img/t.gif'><tr><td><img src='/img/tl.gif' width=4 height=19></td><td width=16><nobr> <a href="JavaScript:shok:pen_art_window('/objectInfo.jsp?name=form.ver_grasumka5')"><img src=/img/gi.gif width=14 height=14></a> </nobr></td><td><nobr><b><i class=yellow> контрабандная сумка для гранат</i></b> </nobr></td><td align='right'><nobr><b>10,5 ZRM</b></nobr></td><td align=right><img src='/img/tr.gif' width=4 height=19></td></tr></table></td></tr>
2 ) может использовать библиотеку <INet.au3>
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Немного некрасиво, но
Код:
$sPattern = '(?sim)>([0-9,]\sZRM)<.*?class=t_black title="?([^"]+?)"?\sonclick.*?Масса.*?>([0-9./]+)<'
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
;~ #include <ie.au3>
#include <array.au3>

$sURL = 'http://www.peredovaya.ru/hero.jsp?hero=Variag'
;~ $sURL = 'http://www.peredovaya.ru/hero.jsp?hero=sens97'
;~ $oIE = _IECreate($sURL)
;~ $oDIV = _IEGetObjById($oIE, 'div_ammo')
;~ If @error <> 0 Then
;~ 	MsgBox(0, 0, 'Не нашли div_ammo')
;~ 	Exit
;~ EndIf
;~ $sHTML = _IEPropertyGet($oDIV, 'outerHTML')

$sHTML = BinaryToString(InetRead($sURL, 1), 4)
$sPattern = '(?sim)<I class=yellow>[ ]*(.*?)</I>.*?([0-9,]+\sZ*RM).*?Масса.*?>([0-9.]+).*?Износ.*?>([0-9/]+)<'
$aA = StringRegExp($sHTML, $sPattern, 3)
_ArrayDisplay($aA)
;~ _IEQuit($oIE)
 
Автор
Y

yuran2

Хочу все уметь
Сообщения
38
Репутация
0
:laugh: огромное спасибо axlwor
больше всего интересовала строка совпадения с образцом , но
возник другой вопрос - а как можно подсчитать количество совпадений ?

$aA = StringRegExp($sHTML, $sPattern, 3)
$aA, i =?
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Ты хочешь узнать сколько в массиве элементов или сколько одето?
Код:
if IsArray($aA) then $iMax = Ubound($aA)/3
 
Автор
Y

yuran2

Хочу все уметь
Сообщения
38
Репутация
0
axlwor
все понял
Код:
if IsArray($aA) then $iMax = 1+ Ubound($aA)/4

всем спасибо .
 
Верх