Русское сообщество AutoIt

  • Май 20, 2012, 12:56:29 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:

Открыт новый раздел Полезняшки - Полезные решения, функции и скрипты в помощь кодеру

:Typing:

Реклама

Автор Тема: [Данные, строки] Нужен шаблон для получения текста ссылки из HTML кода!  (Прочитано 2807 раз)

0 Пользователей и 1 Гость смотрят эту тему.

zip-per [?]

  • Новичок
  • *
  • Репутация: 0
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 30
  • Версия AutoIt: 3.3.6.1
    • Награды
Имею страницу, нужно выдернуть из нее 1-2 слова.

Код: AutoIt [Выделить]
Func Cicle2()
     _IENavigate ($oIE, "http://www.ххх.ru/map.php",1)

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

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

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

Строчку скопировал из страницы, так что ошибки в образе изключины.
Все равно возвращает "1"
« Последнее редактирование: Февраль 14, 2011, 19:48:01 от zip-per »



  Записан
Жизнь - это игра! И я ни как не могу пройти уровень, где моя зар.плата 2000$.

madmasles [?]

  • Локальный модератор
  • *
  • *****
  • Репутация: 1425
  • Online Online
  • Пол: Мужской
  • Сообщений: 3814
  • Версия AutoIt: 3.3.6.1 - 3.3.9.4
    • Награды
zip-per
Функция StringRegExp() с третьим параметром 3 возвращает массив совпавших элементов. Если у Вас pattern правильный, то результат так нужно смотреть:
Код: AutoIt [Выделить]
MsgBox(0, "", $aMAP[0])
Вместо (\d*?) поставьте (.+), а то цифры у Вас в искомом фрагменте не наблюдаются.
« Последнее редактирование: Февраль 13, 2011, 23:39:18 от madmasles »



  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
ПредупреждениеЗа нарушение правил форума (пункт Б.5):
Цитата
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.

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

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

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




  Записан
Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.



«Не оказываю техподдержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

zip-per [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 30
  • Версия AutoIt: 3.3.6.1
    • Награды
Переписал малость:
Код: AutoIt [Выделить]
#include <IE.au3>
#include <Inet.au3>
 $sHTMLMAP = _INetGetSource ("http://www.ххх.ru/map.php")
 $aMAP = StringRegExp($sHTMLMAP, "<br>Вы находитесь в секторе<br><b>&raquo;</b> <a href=/map.php?sx=151&sy=150 title='Вы находитесь в секторе [Z] (.+)'><b>[Z] (.+)</b></a><br></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 [?]

  • Модератор
  • *
  • *****
  • Репутация: 548
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 2056
  • Версия AutoIt: 3.3.6.1
    • Награды
zip-per
ПредупреждениеБудьте так любезны, не игнорируйте предупреждение Администратора.




  Записан

--------------------------------------------------------------------------------------------------
Все стандарты Document Object Model HTML
--------------------------------------------------------------------------------------------------
«Жизнь – цепь, а мелочи в ней – звенья. Нельзя звену не придавать значения!»

madmasles [?]

  • Локальный модератор
  • *
  • *****
  • Репутация: 1425
  • Online Online
  • Пол: Мужской
  • Сообщений: 3814
  • Версия AutoIt: 3.3.6.1 - 3.3.9.4
    • Награды
zip-per,
*Click*




  Записан

zip-per [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 30
  • Версия AutoIt: 3.3.6.1
    • Награды
Уважаемые администраторы и форумчане!
Я видел ваши сообщения и на форуме и в личке. После первого я связался с админом и спросил как лучше назвать тему. Теперь переименовал.




  Записан

Garrett [?]

  • Модератор
  • *
  • *****
  • Репутация: 548
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 2056
  • Версия AutoIt: 3.3.6.1
    • Награды
zip-per
Приведите, пожалуйста, строку, в которой нужно искать совпадения, как есть.




  Записан

madmasles [?]

  • Локальный модератор
  • *
  • *****
  • Репутация: 1425
  • Online Online
  • Пол: Мужской
  • Сообщений: 3814
  • Версия AutoIt: 3.3.6.1 - 3.3.9.4
    • Награды
zip-per
Попробуйте так:
Код: AutoIt [Выделить]
;...
$aMAP = StringRegExp($sHTMLMAP, "Вы находитесь в секторе \[Z\] (.+)'><b>", 3)
;...
Или так:
Код: AutoIt [Выделить]
;...
$sMAP = StringRegExpReplace($sHTMLMAP, "(?s).*?Вы находитесь в секторе \[Z\] (.+)'><b>?.*", '\1')
MsgBox(0, "", $sMAP)
;...




  Записан

zip-per [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 30
  • Версия AutoIt: 3.3.6.1
    • Награды
Вот нужная часть

<input type=submit value='&raquo'>&nbsp;&nbsp;
</td></tr></form></table>
<br>
Вы находитесь в секторе<br>
<b>&raquo;</b> <a href=/map.php?sx=151&sy=150 title='Вы находитесь в секторе [Z] Enter Go'><b>[Z] Enter Go</b></a><br>
</td></tr></table>
 
</td><td valign=top>
<center><table>
<form action=/map.php method=GET>
<tr><td align=right><b>Район:</b></td><td>&nbsp;<select name=sxy>




  Записан

Garrett [?]

  • Модератор
  • *
  • *****
  • Репутация: 548
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 2056
  • Версия AutoIt: 3.3.6.1
    • Награды
Попробуйте так:
Код: AutoIt [Выделить]
$aMAP = StringRegExp($sHTMLMAP, ".*?title='Вы находитесь в секторе.*?\[Z\](.*?)'><b>\[Z\](.*?)</b>", 3)
MsgBox(0, "", $aMAP[0])




  Записан

zip-per [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 30
  • Версия AutoIt: 3.3.6.1
    • Награды
madmasles
Во втором случае ругается на
Код: AutoIt [Выделить]
($sHTMLMAP, "Вы находитесь в секторе \[Z\] (.+)'><b>", 3)

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




  Записан

madmasles [?]

  • Локальный модератор
  • *
  • *****
  • Репутация: 1425
  • Online Online
  • Пол: Мужской
  • Сообщений: 3814
  • Версия AutoIt: 3.3.6.1 - 3.3.9.4
    • Награды
zip-per  [?]
Цитата
ругается на
У меня работает с Вашим куском текста.




  Записан

zip-per [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 30
  • Версия AutoIt: 3.3.6.1
    • Награды
Я видимо устал, уже почти 16 часов воспринимаю информацию и пытаюсь ее переварить. Отложу до завтра этот момент. Осталось на сон 3,5 часа и на работу  :-X




  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
zip-per  [?]
Цитата
я связался с админом и спросил как лучше назвать тему. Теперь переименовал.
Разве я тебе дал такое название темы?
Я указал на тему, где ты можешь попросить чтобы название придумали за тебя, текущее название тоже не удовлетворяет правила.




  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
[Данные, строки] Таблица HTML в TXT
AutoIt для новичков
Rjevsky 0 1418 Последний ответ Декабрь 20, 2009, 13:39:02
от Rjevsky
[Данные, строки] Найти вхождение в строке (html код)
AutoIt для новичков
Fever 32 3536 Последний ответ Сентябрь 16, 2010, 12:18:55
от Houl777
[Данные, строки] Копирование куска текста из HTML-кода страницы
AutoIt для новичков
coldmine 3 1347 Последний ответ Июнь 27, 2010, 18:16:20
от gregaz
[Данные, строки] Поиск текста в файле и выдача номера строки
Стол заказов
Sky-WaLkeR 3 2134 Последний ответ Сентябрь 25, 2010, 00:05:22
от Sky-WaLkeR
[RegExp] Извлечение текста из html кода
Регулярные выражения и прочее
kosjachok 6 1811 Последний ответ Ноябрь 25, 2010, 14:25:44
от gregaz
Функция для получения текста строки в combobox
GUI - Графический интерфейс пользователя
lexaSF 0 822 Последний ответ Декабрь 31, 2010, 01:58:11
от lexaSF
[Данные, строки] Символы ? . > = " сприсутствуют в тексте строки как должен выглядеть шаблон
Регулярные выражения и прочее
general66 5 2574 Последний ответ Май 02, 2011, 01:03:39
от general66
[Данные, строки] Изменение и сохранение кода программы
Стол заказов
Prorok 3 651 Последний ответ Май 02, 2011, 00:57:24
от VladUs
Перенесено: StringRegExp нужен правильный "Искомый образец (шаблон)"
Стол заказов
CreatoR 0 161 Последний ответ Январь 28, 2012, 13:01:46
от CreatoR
[Сеть, интернет] Нужен шаблон для команды IniRead, для чтения file.ini построчно.
Автоматизация IE и Web-интерфейса
DStalker 4 220 Последний ответ Апрель 14, 2012, 19:42:20
от DStalker


Реклама