Что нового

Узнаваемость слов или значений из кода HTML

rufik

Новичок
Сообщения
33
Репутация
4
Код:
<ul>
        <li>
            <img width="16" height="16" src="/Themes/images/espresso.png"/>
            <span class="epic">Кофемашина</span>
            <span class="minor"></span>
            <span class="minor">20 часов 55 минут</span>
        </li>
</ul>
<ul>
        <li>
            <img width="23" height="21" src="/Themes/images/Helicopters/heli2-small.jpg"/>
            <span class="epic">Спасатель</span>
            <span class="minor">1 час 39 минут</span>
        </li>
        <li>
            <img width="23" height="21" src="/Themes/images/Helicopters/heli3-small.jpg"/>
            <span class="epic">Реаниматор</span>
            <span class="minor">1 час 39 минут</span>
        </li>
</ul>

Это фрагмент кода из игры. Мне надо записать скрипт узнаваемости слова "Кофемашина" допустим каждые 10 минут.
Объясняю: как видите через 20 часов 55 минут время кофемашины закончится и фрагмент кода с кофемашиной исчезней, мне надо, чтобы скрипт каждые 10 минут брал информацию о наличии слова "Кофемашина". А когда он исчезнет, я направлю его в комнату где он возьмет кофемашину заново(а с этим я сам справлюсь).
И вообще, когда прочитать любой текст внутри кода (прошу объяснить в примитивной форме без всяких фокусов:smile:)... я тут справки и коды смотрю, никак не могу разобраться, знаю, что там используется objgetcollection потом innertex, а что между ними и как их связать?
Заранее спасибо!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
rufik,
Можно так попробовать (без проверок на ошибки).
Код:
#include <IE.au3>

Global $oIE, $sUrl = 'http://autoit-script.ru/', $fSearch, $sSearch = 'madmasles', $fErrror, $hWin

$oIE = _IECreate($sUrl)
$hWin = _IEPropertyGet($oIE, 'hwnd')
_CheckSearchIE()
AdlibRegister('_CheckSearchIE', 600000) ;10 min.
While WinExists($hWin)
	If $fErrror Then
		ToolTip('Error', 0, 0)
	Else
		If $fSearch Then
			;какое-то действие, если слово есть
			ToolTip('Yes ' & $sSearch, 0, 0)
		Else
			;какое-то действие, если слова нет
			ToolTip('No ' & $sSearch, 0, 0)
		EndIf
	EndIf
	Sleep(1000)
WEnd

Func _CheckSearchIE()
	AdlibUnRegister('_CheckSearchIE')
	Local $s_Text = _IEBodyReadText($oIE)
	If @error Then
		ConsoleWrite('Error' & @LF)
		$fErrror = True
		$fSearch = False
		AdlibRegister('_CheckSearchIE', 10000) ;10 sec.
	Else
		$fErrror = False
		If StringInStr($s_Text, $sSearch) Then
			$fSearch = True
		Else
			$fSearch = False
		EndIf
		ConsoleWrite($fSearch & @LF)
		AdlibRegister('_CheckSearchIE', 600000) ;10 min.
	EndIf
EndFunc   ;==>_CheckSearchIE
 
Автор
R

rufik

Новичок
Сообщения
33
Репутация
4
ого, спасибо!
А вообще, как можно прочитать текст с кода?
Например ту же "Кофемашина" прочесть с кода и вывести на msgbox


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

Код:
#include <IE.au3>
Dim $i = 0
$oIE = _IECreate("http://xospital.spaces.ru/Pharmacy")
$oTags = _IETagNameGetCollection($oIE, "span")
for $oTag In $oTags 
 msgbox(1, "Привет", _IEPropertyGet($oTag, "innerText"))
next


Я так понял, что кофемашина это span1, а Спасатель это span4, а как спасателя можно в этом коде написать?
так?
Код:
#include <IE.au3>
Dim $i = 0
$oIE = _IECreate("http://xospital.spaces.ru/Pharmacy")
$oTags = _IETagNameGetCollection($oIE, "span",4)
for $oTag In $oTags 
 msgbox(1, "Привет", _IEPropertyGet($oTag, "innerText"))
next

И вообще, как написать так, чтобы в msgbox появлялся просто Кофемашина, а не переходила на другие span - ы (из за next)... (чтобы ок нажимаешь и все) а next немогу убрать, так как это часть комбинации for in next.
И можно ли слово Кофемашина, выведенное из кода, использовать в качестве ссылки?
один вариант я знаю:
Код:
_IELinkclickbytext($oIE, "Кофемашина")

, еще другой способ есть при помощи click , подскажите пожалуйста
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
rufik [?]
И вообще, как написать так, чтобы в msgbox появлялся просто Кофемашина, а не переходила на другие span - ы
Код:
#include <IE.au3>
Dim $i_Index = 0
$oIE = _IECreate("http://xospital.spaces.ru/Pharmacy")
$oTags = _IETagNameGetCollection($oIE, "span") ; $i_Index - третий параметр
For $oTag In $oTags
	If StringStripWS(_IEPropertyGet($oTag, "innerText"), 3) == 'кофемашина' Then
		MsgBox(1, "index: " & $i_Index, _IEPropertyGet($oTag, 'innerText'))
	EndIf
	$i_Index += 1
Next


И можно ли слово Кофемашина, выведенное из кода, использовать в качестве ссылки?
Нет, это не ссылка.
 
Автор
R

rufik

Новичок
Сообщения
33
Репутация
4
Я не понял, что там с индексами вы настроили, но сработало и больше не некстирует)
если не трудно, можете написать такой же скрипт для Спасителя... там индекс +4 будет?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
rufik [?]
написать такой же скрипт для Спасителя
Просто замените в предыдущем скрипте (в условие) слово "Кофемашина" на "Спасатель"
 
Автор
R

rufik

Новичок
Сообщения
33
Репутация
4
Код:
#include <IE.au3>

$oIE = _IECreate("http://xospital.spaces.ru/Pharmacy")

$oTags = _IETagNameGetCollection($oIE, "span") 
For $oTag In $oTags
    If StringStripWS(_IEPropertyGet($oTag, "innerText"), 3) == 'Кофемашина' Then
        _IELinkClickByText($oIE,"Алмазы")
	 else  
		_IELinkClickByText($oIE,"Кабинет")
    EndIf
   
Next

почему он переходит по ссылке "Алмазы", а потом идет в "Кабинет" ??
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
rufik [?]
почему он переходит по ссылке "Алмазы", а потом идет в "Кабинет" ?
А так?
Код:
#include <IE.au3>

Global $fClick

$oIE = _IECreate('http://xospital.spaces.ru/Pharmacy')

$oTags = _IETagNameGetCollection($oIE, 'span')
For $oTag In $oTags
	If StringStripWS(_IEPropertyGet($oTag, 'innerText'), 3) == 'Кофемашина' Then
		_IELinkClickByText($oIE, 'Алмазы')
		$fClick = True
		ExitLoop
	EndIf
Next
If Not $fClick Then
	_IELinkClickByText($oIE, 'Кабинет')
EndIf
 
Автор
R

rufik

Новичок
Сообщения
33
Репутация
4
Работает, спасибо! ;D
Еще вопрос...
Код:
<li>
                    <img width="16" height="16" alt="o" src="/Themes/images/car-red.png">
                    <a href="/AutoPark?t=634761807792132126">Автопарк</a>
                        <span class="ylwtitle">(6)</span>
                </li>

Это выглядит как "Палаты(6)"
мне надо написать скрипт, если цифра после палаты >=2, то
Код:
_IElinkclickbytext($oIE, "Палаты")


я понял, как прочитать слово из кода, но в данном случае это цифра, причем переменная и предыдущие способы не подходят
и еще, как я могу прочесть название ссылки "Палаты" с кода :scratch:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Автор
R

rufik

Новичок
Сообщения
33
Репутация
4
так это по этой же теме, вопрос соответствует названию темы... хочу просто закрепить знания на выведении кода и изучить его нормально, оно мне потом пригодится
 
Верх