Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено]Получение переменной с HTML с помощью StringRegExpReplace

Ответить
Настройки темы
[решено]Получение переменной с HTML с помощью StringRegExpReplace

Новый участник


Сообщения: 43
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: ikif
Дата: 22-07-2009
Кусок кода с которого надо выловить число:

HTML код: Выделить весь код
<tr> <td height="22" colspan="8" align="center" valign="middle"><span class="text_head3">test</span></td> <td align="center" valign="top" class="text_head3">518766</td> <td align="center" valign="top" class="text_head3">12</td> <td align="center" valign="top" class="text_head3">0</td> </tr>

Код: Выделить весь код
	
$KodHtml=_IEDocReadHTML ( $oIE )
	$pattern="(?s).*?class=.?text_head3.?>(.*?)</td?.*"
	$Num = StringRegExpReplace($KodHtml, $pattern, "\1")
	;$Num= Number($Num) 
	;MsgBox(0, "Good", $Num) ;for check
	If $Num>=50000 Then
                         .
                         .
                         .
	EndIf
Здравствуйте.
Пытаюсь вытащить число 12, но что то не получается с $pattern , почему то записявается вся страница.
Справку читал , но не понял (*,+,?, ...) и как избавиться от " .
Заранее благодарю.

Отправлено: 21:11, 21-07-2009

 

Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата ikif:
Пытаюсь вытащить число 12 »
В приведенном куске html кода, повторяются (за исключением цифр) эти строчки:
Код: Выделить весь код
 <td align="center" valign="top" class="text_head3">518766</td>
<td align="center" valign="top" class="text_head3">12</td>
<td align="center" valign="top" class="text_head3">0</td>
Вопрос уточняющий, на странице еще могут встречатся подобные строки? Если нет, то постоянно ли на станице будут присуствовать все эти три строки?

Конкретно только в этом случае $pattern='(?s).*<td align="center" valign="top" class="text_head3">(\d\d)</td>.*'
Но это ненадежно... Поэтому требуется уточнение.

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Последний раз редактировалось beve, 21-07-2009 в 21:56.


Отправлено: 21:45, 21-07-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 43
Благодарности: 0

Профиль | Отправить PM | Цитировать


На странице только в этом месте подобный код.
1.За счет чего , берется 12 , а не 518766 ? Из-за \d\d ?
2.То что в $pattern должно быть в ' ' или " " ?
По поводу постоянно ли присутствуют ли эти строки в коде:
Тут постоянно.
3.Как бы это выглядило , если бы не постоянно ?

Отправлено: 22:32, 21-07-2009 | #3


Новый участник


Сообщения: 43
Благодарности: 0

Профиль | Отправить PM | Цитировать


Как я понял /d/d - 2 цифры.
Но это не всегда так, и первое и второе могут быть разные.
И всё равно меседж показывает всю страничку.

index.htm
HTML код: Выделить весь код
<tr> <td align="center" valign="top" class="text_head3">56656</td> <td align="center" valign="top" class="text_head3">12</td> <td align="center" valign="top" class="text_head3">0</td> </tr>

Код: Выделить весь код
#include <IE.au3>
#include <Array.au3>
#Include <String.au3>

$oIE = _IECreate ("C:\Documents and Settings\Opetu\Desktop\index.htm")

	
$KodHtml=_IEDocReadHTML ( $oIE )
	$pattern='(?s).*<td align="center" valign="top" class="text_head3">(\d\d)</td>.*'
	$Num = StringRegExpReplace($KodHtml, $pattern, "\1")
	;$Num= Number($Num) 
	MsgBox(0, "Good", $Num)

Последний раз редактировалось ikif, 21-07-2009 в 23:20.


Отправлено: 22:53, 21-07-2009 | #4


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


на скриншоте TD, а ты в коде пишеш td...


Думаю тут в коде, так будет работать (код в шаблоне короче делать не стал, чтобы понятна была суть):
Код: Выделить весь код
$pattern='(?si).*class="text_head3">(?:.*)</td>.*?<td align="center" valign="top" class="text_head3">(.*)</td>.*?<td align="center" valign="top" class="text_head3">(?:.*)</td>.*'
Цитата ikif:
2.То что в $pattern должно быть в ' ' или " " ?»
Если кавычек в $pattern нет, то могут быть любые, или '', или "". Если же есть уже слово в кавычках внутри $pattern, то весь код в $pattern обрамляется в кавычки другого вида.
Цитата ikif:
3.Как бы это выглядило , если бы не постоянно ? »
Нужно было бы искать чтото "к чему прицепиться" в начале и в конце искомого шаблона, чтобы исключить совпадения (если же искомая строка в html коде будет уникальная (не будет повторятся), то дело намного проще.)

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Последний раз редактировалось beve, 22-07-2009 в 01:02.


Отправлено: 00:11, 22-07-2009 | #5


Новый участник


Сообщения: 43
Благодарности: 0

Профиль | Отправить PM | Цитировать


Полное содержимое файла index.htm :
HTML код: Выделить весь код
<html> <head> </head> <body> <table> <tr> <td align="center" valign="top" class="text_head3">56656</td> <td align="center" valign="top" class="text_head3">12</td> <td align="center" valign="top" class="text_head3">0</td> </tr> </table> </body> </html>

Полное содержимое скрипта :
Код: Выделить весь код
#include <IE.au3>
#include <Array.au3>
#Include <String.au3>

$oIE = _IECreate ("C:\Documents and Settings\Opetu\Desktop\index.htm")

	
$KodHtml=_IEDocReadHTML ( $oIE )
	$pattern='(?si).*class="text_head3">(?:.*)</td>.*?<td align="center" valign="top" class="text_head3">(.*)</td>.*?<td align="center" valign="top" class="text_head3">(?:.*)</td>.*'
	$Num = StringRegExpReplace($KodHtml, $pattern, "\1")
	;$Num= Number($Num) 
	MsgBox(0, "Good", $Num)
И всё равно выходит чёрт знает что.

В html td написано маленькими буквами

Отправлено: 02:09, 22-07-2009 | #6


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата ikif:
И всё равно выходит... »
Ты прав. В index.htm написан один код, а в процессе обработки, он изменяется. Поэтому могу только предложить читать этот файл так:
Код: Выделить весь код
$file=FileOpen ("C:\Documents and Settings\Opetu\Desktop\index.htm",0)
$KodHtml=FileRead($file)
FileClose($file)


$pattern='(?s).*class="text_head3">(?:.*)</td>.*?<td align="center" valign="top" class="text_head3">(.*)</td>.*?<td align="center" valign="top" class="text_head3">(?:.*)</td>.*'
$Num = StringRegExpReplace($KodHtml, $pattern, "\1")
    MsgBox(0, "Good", $Num)

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 03:34, 22-07-2009 | #7


Новый участник


Сообщения: 43
Благодарности: 0

Профиль | Отправить PM | Цитировать


Для эксперементов сохранил эту страничку на Десктоп, а так она должна открываться в интернете.
$oIE = _IECreate ("C:\Documents and Settings\Opetu\Desktop\index.htm", 0)
Нужного результата не принесло.

Последний раз редактировалось ikif, 22-07-2009 в 09:16.


Отправлено: 07:36, 22-07-2009 | #8


Новый участник


Сообщения: 43
Благодарности: 0

Профиль | Отправить PM | Цитировать


Проблему решил, построив фильтр исходя из написаного в сообщении:


Интересно что center меняется на middle.

Отправлено: 10:15, 22-07-2009 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено]Получение переменной с HTML с помощью StringRegExpReplace

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. NiOl Скриптовые языки администрирования Windows 7 31-01-2019 19:58
CMD/BAT - Получение полного доступа с помощью ICACL.EXE/CACL.EXE Smarty Скриптовые языки администрирования Windows 7 06-09-2009 12:34
[решено] Вытянуть содержание HTML тега с помощью регулярных выражений aesir AutoIt 4 28-08-2009 21:22
[решено] И снова stringRegExpReplace... Twix1124 AutoIt 6 01-06-2009 03:49
[решено] Хелп с StringRegExpReplace xSpaiderx AutoIt 8 31-03-2009 23:16




 
Переход