Что нового

Код страницы и поиск на ней

Arei

Скриптер
Сообщения
938
Репутация
115
Помогите пожалуйста как мне найти определенный текст на сайте, т.е определить кто написал сообщение и смысл сообщения последнего (для этого сайта оно первое )Что написанно на форуме то это не подходит,а вот через StringRegExp я не пойму как сделать.Заранее спасибо.

Вот сайт http://biglion.ru/rostovnadonu/forum/offer/index.php?deal_offer_id_4=446
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Извините я не специально я думал что она не создалась и снова попытался.Скажите как её удалить.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Код:
#include <IE.au3>
$oIE = _IECreate("http://biglion.ru/rostovnadonu/forum/offer/index.php?deal_offer_id_4=446")
$oTables = _IETableGetCollection($oIE)
For $oTable In $oTables
    If $oTable.className = "forum-table" Then
        $aArray = _IETableWriteToArray($oTable)
    EndIf
Next
MsgBox(0, StringReplace($aArray[0][0], @CRLF, Chr(32)), $aArray[1][0])



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

Arei [?]
Скажите как её удалить.
Вы автор, у вас все права в правом верхнем углу поста! ;)
 

axlwor

Скриптер
Сообщения
657
Репутация
147
набросочек
Код:
#include <ie.au3>
#include <array.au3>
$oIE = _IECreate("http://biglion.ru/rostovnadonu/forum/offer/index.php?deal_offer_id_4=446")
$oTable = _IETableGetCollection ($oIE, 2)
_ArrayDisplay (_IETableWriteToArray($oTable, true))
_IEQuit($oIE)
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Спасибо всем огромное но вот у меня есть ещё 1 вопрос, а можно как нибудь сделать типа секундомера т.е программа постоянно проверяла на наличие новых сообщений т.е если написали новое сообщение то оно появлялось а сторое убиралось на экране, если его ещё не закрыли я про пример Уважаемого Garrett
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
while 1
FunctionOne()
sleep($period)
wend

или
Код:
AdlibRegister ("FunctionOne", $period)
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Не получается почему то.Хоть делаю по примеру.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Это не пример. Вместо functionOne() должна быть твоя процедурка, которая
1. По мере надобности _IECreate/_IEAttach
2. По мере надобности логинится на сайт
3. Ищет необходимые данные
4. Преобразует данные
5. Показывает/сохраняет данные
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Да всё сделал и не получается, если не трудно то покажите пожалуйста на примере выше который от Garrett.Я на нём пытаюсь сделать.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
#include <IE.au3>

; )
HotKeySet ('{ESC}', '_Exit')


While 1
	TrayTip ("", "Начинаем", 2)
	Sleep (1000)
	_Pooh()
	TrayTip ("", "Закончили", 2)
	Sleep (30*60*1000)
WEnd
Exit

Func _Pooh()
	$oIE = _IECreate("http://biglion.ru/rostovnadonu/forum/offer/index.php?deal_offer_id_4=446")
	$oTables = _IETableGetCollection($oIE)
	For $oTable In $oTables
		If $oTable.className = "forum-table" Then
			$aArray = _IETableWriteToArray($oTable)
		EndIf
	Next
	MsgBox(0, StringReplace($aArray[0][0], @CRLF, Chr(32)), $aArray[1][0])
	_IEQuit ($oIE)
EndFunc

Func _Exit()
	If IsObj ($oIE) Then _IEQuit($oIE)
	Exit
EndFunc
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Спасибо, а насчёт ESC вылетает ошибка.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
По esc программа должна (по задумке) завершать свою работу
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Arei
Можно без IE так попробовать:
Код:
#NoTrayIcon
#include <INet.au3>
#include <Encoding.au3>
#include <Constants.au3>

Opt('TrayMenuMode', 1)
Opt('MustDeclareVars', 1)

Global $sMessageOld, $sMessageNew, $iTime, $hNow, $hLast, $hExit, $msg, $iPause = 30 ;пауза в секундах

$hNow = TrayCreateItem('Проверить сейчас')
$hLast = TrayCreateItem('Последнее сообщение')
TrayCreateItem('')
$hExit = TrayCreateItem('Выход')

TraySetState()
TraySetClick(8)
TraySetToolTip('Проверка появления новых сообщений.')

_TrayItemsDisable()
$sMessageOld = _NewMessage()
If $sMessageOld <> 'Error' Then
	MsgBox(0, 'Последнее сообщение.', $sMessageOld, 5)
Else
	MsgBox(0, 'Ошибка', 'Ошибка получения данных с сайта.', 5)
EndIf
_TrayItemsEnable()
$iTime = TimerInit()
While 1
	$msg = TrayGetMsg()
	Switch $msg
		Case $hNow
			_TrayItemsDisable()
			$sMessageNew = _NewMessage()
			If $sMessageNew <> 'Error' Then
				If $sMessageNew <> $sMessageOld Then
					$sMessageOld = $sMessageNew
					MsgBox(0, 'Есть новое сообщение.', $sMessageOld)
				Else
					MsgBox(0, 'Проверка сообщений.', 'Нет новых сообщений')
				EndIf
			Else
				MsgBox(0, 'Ошибка', 'Ошибка получения данных с сайта.')
			EndIf
			_TrayItemsEnable()
		Case $hLast
			TrayTip('', '', 0)
			TraySetState(8)
			TraySetToolTip('Проверка появления новых сообщений.')
			_TrayItemsDisable()
			MsgBox(0, 'Последнее сообщение.', $sMessageOld)
			_TrayItemsEnable()
		Case $hExit
			_MyExit()
	EndSwitch

	If TimerDiff($iTime) >= $iPause * 1000 Then
		_TrayItemsDisable()
		$sMessageNew = _NewMessage()
		If $sMessageNew <> 'Error' Then
			If $sMessageNew <> $sMessageOld Then
				$sMessageOld = $sMessageNew
				If MsgBox(0, 'Есть новое сообщение.', $sMessageOld, 5) = -1 Then
					TraySetState(4)
					TraySetToolTip('Есть новое сообщение.')
					TrayTip('Проверка сообщений', 'Есть новое сообщение.', 100, 1)
				EndIf
			EndIf
		EndIf
		_TrayItemsEnable()
		$iTime = TimerInit()
	EndIf
WEnd

Func _NewMessage()
	If Not Ping('biglion.ru') Then Return 'Error'
	Local $sUrl = 'http://biglion.ru/rostovnadonu/forum/offer/index.php?deal_offer_id_4=446'
	Local $sSource, $sText
	TraySetIcon('Shell32.dll', 276)
	$sSource = _INetGetSource($sUrl)
	If Not $sSource Then Return 'Error'
	$sText = StringRegExpReplace($sSource, '(?s).*?<table class="forum-table">(.*?)</tr>?.*', '\1')
	$sText = _Encoding_UTF8ToUnicode_API(StringStripWS(StringRegExpReplace($sText, '<.*?>', ''), 7))
	$sText = StringReplace($sText, '&quot;', '"')
	TraySetIcon()
	If $sText Then
		Return $sText
	Else
		Return 'Error'
	EndIf
EndFunc   ;==>_NewMessage
Func _TrayItemsDisable()
	TrayItemSetState($hNow, $TRAY_UNCHECKED + $TRAY_DISABLE)
	TrayItemSetState($hLast, $TRAY_UNCHECKED + $TRAY_DISABLE)
	TrayItemSetState($hExit, $TRAY_DISABLE)
EndFunc   ;==>_TrayItemsDisable

Func _TrayItemsEnable()
	TrayItemSetState($hNow, $TRAY_ENABLE)
	TrayItemSetState($hLast, $TRAY_ENABLE)
	TrayItemSetState($hExit, $TRAY_ENABLE)
EndFunc   ;==>_TrayItemsEnable

Func _MyExit()
	Exit
EndFunc   ;==>_MyExit
Encoding UDF - Библиотека для работы с кодировками строк.
Управляется по клику правой кнопкой мыши по иконке в трее.
 
Верх