Что нового

[Данные, строки] Нужен шаблон для получения текста ссылки из HTML кода!

zip-per

Новичок
Сообщения
30
Репутация
0
Имею страницу, нужно выдернуть из нее 1-2 слова.

Код:
Func Cicle2()
	 _IENavigate ($oIE, "http://www.ххх.ru/map.php",1)

     	 $sHTMLMAP = _INetGetSource ("http://www.ххх.ru/map.php")
	 $aMAP = StringRegExp($sHTMLMAP, "
Вы находитесь в секторе
<b>&raquo;</b> <a href=/map.php?sx=151&sy=150 title='Вы находитесь в секторе [Z] (\d*?)'><b>[Z] (\d*?)</b></a>
", 3)
      MsgBox(0, "", $aMAP, 1)
     EndFunc


На месте (\d*?) может встречаться такие значения:
Enter Go, Kit и еще с десяток похожих.

Возвращает значение "1" - совпадений не найдено.
Думал не правильно шаблон задал, тогда попробовал точную строку найти:
Код:
$aMAP = StringRegExp($sHTMLMAP, "
Вы находитесь в секторе
<b>&raquo;</b> <a href=/map.php?sx=151&sy=150 title='Вы находитесь в секторе [Z] Enter Go'><b>[Z] Enter Go</b></a>
", 3)


Строчку скопировал из страницы, так что ошибки в образе изключины.
Все равно возвращает "1"
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Данные, строки] Не срабатывает функция StringRegExp

zip-per
Функция StringRegExp() с третьим параметром 3 возвращает массив совпавших элементов. Если у Вас pattern правильный, то результат так нужно смотреть:
Код:
MsgBox(0, "", $aMAP[0])
Вместо (\d*?) поставьте (.+), а то цифры у Вас в искомом фрагменте не наблюдаются.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: [Данные, строки] Не срабатывает функция StringRegExp

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

"[Данные, строки] Не срабатывает функция StringRegExp" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Администратор форума.
 
Автор
Z

zip-per

Новичок
Сообщения
30
Репутация
0
Re: [Данные, строки] Не срабатывает функция StringRegExp

Переписал малость:
Код:
#include <IE.au3>
#include <Inet.au3>
 $sHTMLMAP = _INetGetSource ("http://www.ххх.ru/map.php")
 $aMAP = StringRegExp($sHTMLMAP, "
Вы находитесь в секторе
<b>&raquo;</b> <a href=/map.php?sx=151&sy=150 title='Вы находитесь в секторе [Z] (.+)'><b>[Z] (.+)</b></a>
</td></tr></table>", 3)
 If IsArray($aMAP) Then
	If UBound($aMAP) = 1 Then		
		MsgBox(0, "", $aMAP[0], 1)
	EndIf
Else
	MsgBox(0, '', 'Совпадений нет', 2)
EndIf


Возвращает: совпадений не найдено :(
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Данные, строки] Не срабатывает функция StringRegExp

zip-per
Предупреждение Будьте так любезны, не игнорируйте предупреждение Администратора.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Данные, строки] Не срабатывает функция StringRegExp

zip-per,
*Click*
 
Автор
Z

zip-per

Новичок
Сообщения
30
Репутация
0
Re: [Данные, строки] Не могу получить результат от функция StringRegExp

Уважаемые администраторы и форумчане!
Я видел ваши сообщения и на форуме и в личке. После первого я связался с админом и спросил как лучше назвать тему. Теперь переименовал.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Данные, строки] Не могу получить результат от функции StringRegExp

zip-per
Приведите, пожалуйста, строку, в которой нужно искать совпадения, как есть.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Данные, строки] Не могу получить результат от функции StringRegExp

zip-per
Попробуйте так:
Код:
;...
$aMAP = StringRegExp($sHTMLMAP, "Вы находитесь в секторе \[Z\] (.+)'><b>", 3)
;...
Или так:
Код:
;...
$sMAP = StringRegExpReplace($sHTMLMAP, "(?s).*?Вы находитесь в секторе \[Z\] (.+)'><b>?.*", '\1')
MsgBox(0, "", $sMAP)
;...
 
Автор
Z

zip-per

Новичок
Сообщения
30
Репутация
0
Re: [Данные, строки] Не могу получить результат от функции StringRegExp

Вот нужная часть

Код:
<input type=submit value='&raquo'>  
</td></tr></form></table>


Вы находитесь в секторе

<b>&raquo;</b> <a href=/map.php?sx=151&sy=150 title='Вы находитесь в секторе [Z] Enter Go'><b>[Z] Enter Go</b></a>

</td></tr></table>
 
</td><td valign=top>
<center><table>
<form action=/map.php method=GET>
<tr><td align=right><b>Район:</b></td><td> <select name=sxy>
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Данные, строки] Не могу получить результат от функции StringRegExp

Попробуйте так:
Код:
$aMAP = StringRegExp($sHTMLMAP, ".*?title='Вы находитесь в секторе.*?\[Z\](.*?)'><b>\[Z\](.*?)</b>", 3)
MsgBox(0, "", $aMAP[0])
 
Автор
Z

zip-per

Новичок
Сообщения
30
Репутация
0
Re: [Данные, строки] Не могу получить результат от функции StringRegExp

madmasles
Во втором случае ругается на
Код:
($sHTMLMAP, "Вы находитесь в секторе \[Z\] (.+)'><b>", 3)


А в первом случае не могу получить результат, позор мне :-X
Ругается на
Код:
MsgBox(0, "", $aMAP[0])
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Данные, строки] Не могу получить результат от функции StringRegExp

zip-per [?]
У меня работает с Вашим куском текста.
 
Автор
Z

zip-per

Новичок
Сообщения
30
Репутация
0
Re: [Данные, строки] Не могу получить результат от функции StringRegExp

Я видимо устал, уже почти 16 часов воспринимаю информацию и пытаюсь ее переварить. Отложу до завтра этот момент. Осталось на сон 3,5 часа и на работу :-X
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: [Данные, строки] Не могу получить результат от функции StringRegExp

zip-per [?]
я связался с админом и спросил как лучше назвать тему. Теперь переименовал.
Разве я тебе дал такое название темы?
Я указал на тему, где ты можешь попросить чтобы название придумали за тебя, текущее название тоже не удовлетворяет правила.
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Re: [Данные, строки] Не могу получить результат от функции StringRegExp

zip-per [?]
Вот нужная часть

Есть мнение, что это код вы взяли из браузера, а _INetGetSource получает немного другой код.
Видимо IE, как то по особому его преобразует, сам с таким сталкивался.

Код:
consolewrite( $sHTMLMAP)


PS По поводу названий тем, то мне кажется в этом разделе они не сильно будут различаться и придумать что то оригинальное, будет сложнее, чем самому составить шаблон :D
 
Автор
Z

zip-per

Новичок
Сообщения
30
Репутация
0
r35p3ct
Спасибо за подсказку, поменял функцию, работает. Но результат все равно не могу вытащить.
Все равно разберусь с этой :mad:.
Обязательно отпишусь в чем проблема была!
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Лучше покажи, что в консоль записалось(исходник страницы), и думаю решение сразу появится, намного быстрее.
 
Автор
Z

zip-per

Новичок
Сообщения
30
Репутация
0
Код:
$sMAP = _INetGetSource("http://www.ххх.ru/me/")
 MsgBox(0, '', $sMAP, 2)

Выводит исходник, но нужные мне сроки не входят на экран.

Тогда дописываю:
Код:
$sMAP = _INetGetSource("http://www.ххх.ru/me/")
 MsgBox(0, '', $sMAP, 2)
 $sMAP2 = StringRegExp($sMAP, ".*?title='Вы находитесь в секторе.*?\[Z\](.*?)'><b>\[Z\](.*?)</b>", 3)
 MsgBox(0, "", $sMAP2[0])


Выдает ошибку:

Код:
MsgBox(0, "", $sMAP2[0])
MsgBox(0, "", $sMAP2^ ERROR
Error: Subscript used with non-Array variable.

Пошел юзать гугл в поисках описания этой проблемы, т.к. в справке никакого Array найти не могу. А что за массив ему нужен тоже не понимаю.
 
Верх