Что нового

[RegExp] Ошибка при применении StringRegExp. Помогите найти.

andrew123

Новичок
Сообщения
8
Репутация
0
Написал кусок кода, что бы находил соответствие шаблону.
Код:
#include <IE.au3>
#include <Array.au3>
#include <File.au3>

$oIE = _IECreate('http://southfloridalawyers.blogspot.com/')
$sHTML = _IEBodyReadHTML($oIE)
MsgBox('','',$sHTML)

   
$sResult = ($sHTML,"<h3 class='post-title entry-title' itemprop='name'>(.*)</h3>", 3)
MsgBox('','',$sResult)

_ArrayDisplay($sResult)


Тут возникает проблема. $sResult возвращает 1, (то есть соответствий нет), и _ArrayDisplay($sResult) не выводит вообще.
Проверял поиском <h3 class='post-title entry-title' itemprop='name'> реально есть в коде страницы.

Не могу понять в чем ошибка!!!! :laugh: :stars:

При чем, я сделал выборку из сайтов, то если пользоваться моим кодом, то примерно 20% сайтов из моего списка нормально работают, остальные нет. Во всех проверял в ручную наличие тегов.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Re: [RegExp] Помогите найти ошибку

andrew123

Код:
$sHTML = _IEDocReadHTML($oIE)

Функция _IEBodyReadHTML() имеет особенность.. Она существенно изменяет исходный код
(Проверьте :smile:)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [RegExp] Помогите найти ошибку

andrew123,
Код:
#include <IE.au3>
#include <Array.au3>

Global $aLinks[1][2]
_IEErrorHandlerRegister()
Do
	$oIE = _IECreate('http://southfloridalawyers.blogspot.com/')
	If @error Then ExitLoop
	$oH3s = _IETagNameGetCollection($oIE, 'h3')
	If @error Then ExitLoop
	ReDim $aLinks[@extended + 1][2]
	For $oH3 In $oH3s
		If $oH3.classname == 'post-title entry-title' Then
			$oLink = _IETagNameGetCollection($oH3, 'a', 0)
			If @error Then ContinueLoop
			$aLinks[0][0] += 1
			$aLinks[$aLinks[0][0]][0] = $oLink.innertext
			$aLinks[$aLinks[0][0]][1] = $oLink.href
		EndIf
	Next
Until 1
;_IEQuit($oIE)
If $aLinks[0][0] Then
	ReDim $aLinks[$aLinks[0][0] + 1][2]
	_ArrayDisplay($aLinks)
Else
	MsgBox(16, 'Error', 'Error')
EndIf

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


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[RegExp] Помогите найти ошибку" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 
Автор
A

andrew123

Новичок
Сообщения
8
Репутация
0
Re: [RegExp] Помогите найти ошибку

Спасибо!!! Все работает !!!! :beer: :IL_AutoIt_1:
Тема решена
 
Верх