Что нового

[Сеть, интернет] Цифру на странице в переменную.

Dere

Новичок
Сообщения
30
Репутация
2
Есть код страницы
Код:
          <div class="the_content">
  <div class="bord_white"></div>
  <div class="the_content_ins">
    <div class="single_battle_params">
      <table>
        <tr>
          <td class="single_battle_vsparams">
            <table style="width: 100%">
              <tr>
                <td></td>
              </tr>
            </table>
            <table style="margin-top: 4px;">
              <tr>
                <td>115</td>
                <td class="vs_icons"><img alt="" src="/img/icons/attack_total.png"></td>
                <td>75</td>
              </tr>
              <tr>
                <td>113</td>
                <td class="vs_icons"><img alt="" src="/img/icons/defence_total.png"></td>
                <td>73</td>
              </tr>
              <tr>
                <td>3103</td>
                <td class="vs_icons"><img alt="" src="/img/icons/hp.png"></td>
                <td>3103</td>
              </tr>
              <tr>
                <td>9</td>
                <td class="vs_icons"><img src="/img/icons/lvl.png" alt="lvl"/></td>
                <td>10</td>
              </tr>
Необходимо вытащить последнюю цифру 10 в переменную, цифра может изменяться.
Разобрал все примеры и что то у меня не получается или не могу догнать что куда.
Примеры брал от сюда:
Код:
 http://autoit-script.ru/index.php/topic,4901.0.html
Подскажите, направьте или напишите выборку под StringRegExpReplace что бы вытащить именно эту цифру из таблицы.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
споллеры стоят, почему то не работают.
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
Спасибо за подсказку - строки кодов копировал с общих правил.
Код:
#Include <Array.au3>

$text = ClipGet()
$pattern = "(?s)lvl.*?<td>(\d+?)</td>"
$aRes = StringRegExp($text,$pattern,3)
_ArrayDisplay($aRes)

При использовании данного кода, нужный мне параметр попадает во вторую строку Row [1] второй столбец Col [0].
Как мне именно этот параметр загнать в переменную? и "lvl" в коде встречается несколько раз.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Код:
$test = StringRegExp($text, '(?smi)lvl\.png.*?<td>(\d+)</td>',3)
If IsArray($test) Then
	$level = $test[0]
	MsgBox(0,"Уровень",$level)
Else
	MsgBox(0,0,"Не найдено")
EndIf
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
вот в таком варианте выводит правильно, если скопировать код страницы в буфер
Код:
#Include <Array.au3>

$text = ClipGet()
$test = StringRegExp($text, '(?smi)alt="lvl".*?<td>(\d+)</td>',3)
If IsArray($test) Then
    $level = $test[0]
    MsgBox(0,"Уровень",$level)
Else
    MsgBox(0,0,"Не найдено")
EndIf

Но если попытаться открыть через эксплорер срабатывает не так.
Код:
$sHTML=_IEBodyReadHTML($svIE)
$sVSLV = StringRegExpReplace($sHTML, '(?smi)alt="lvl".*?<td>(\d+)</td>', 3)
MsgBox(0, "Results", $sVSLV)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Dere [?]
срабатывает не так.
У Вас вместо StringRegExp используется StringRegExpReplace, а в ней немного по другому надо делать, например, так.
Код:
$sHTML = FileRead(@ScriptDir & '\html.txt')
$sLvl = StringRegExpReplace($sHTML, '(?is).*alt=[''"]lvl.*?<td>(\d+)<.*', '$1')
If @extended = 1 Then
	ConsoleWrite('$sLvl: ' & $sLvl & @LF)
Else
	ConsoleWrite('Error!' & @LF)
EndIf
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
Большое спасибо.
Наблюдаю какую то странность. Открываю страницу, копирю HTML код полностью, вставляю в текстовой файл и все работает. Пытаюсь сделать скриптом, т.е открываю страницу, анализ _IEBodyReadHTML, потом StringRegExpReplace и не работает.


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

Прошу прощения, но обнаружил странную особенность. Различаются BODY когда выводишь в эксплорере и когда анализирует AutoIt.
Подскажите как перерисовать запрос под такой код учитывая предыдущие наработки:
Код:
<TD>9</TD>
<TD class=vs_icons><IMG alt=lvl src="/img/icons/lvl.png"></TD>
<TD>10</TD></TR><!--                <tr>


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

задачку решил.
Код:
StringRegExpReplace($sHTML, '(?is).*alt=lvl.*?<td>(\d+)<.*', '$1')
 

madmasles

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

Dere

Новичок
Сообщения
30
Репутация
2
http://autoit-script.ru/index.php/topic,2721.0.html#post_code
где и есть, под спойлером.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
madmasles [?]
Там русская о для того, чтобы теги отображались. Пример: [cоde]код[/cоde].
В данном случае можно использовать теги [nobbc][/nobbc].
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Может имеет смысл поменять в описании тегов русскую о на английскую, чтобы не было ошибок при копировании?

Она тогда вот так будет отображаться
Код:
[code]текст
[/code]
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Нет, там на странице конструкция
[cоde][cоde]test[/cоde][/cоde]
Без русской буквы 'о' во внутренних [cоde][/cоde] теги перекроются.


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

Прикольно)
С этим #91 и #93 весьма прикольно.
Да, исправьте в описании как madmasles сделал.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
madmasles [?]
Может имеет смысл поменять в описании тегов русскую о на английскую, чтобы не было ошибок при копировании?
Там проблема с вложенностью тегов:
[?]
Примечание:
Некоторые теги не могут смешиваться, они отображаются некорректно. В связи с этим в них подставлены русские буквы, поэтому не копируйте теги отсюда, все имена тегов и их параметры следует писать исключительно латинскими буквами.
 
Верх