Что нового

Нужна идея (работа с форумом)

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Ranos1982
Каждое сообщение это блок с кучей вложенных тегов. Найдите крайние (ИМХО, они должны быть одинаковые у всех ответов) и разбирайте их на составные части. Внутри будут и ссылка на него, и дата-время отправки, и автор, и т.д. и т.п. У нас на форуме эти крайние теги вроде <DIV class=bordercolor>...</DIV>.

PS
То, что я называю крайними тегами, наверное, правильно называется по-другому. :smile:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Ranos1982 [?]
Находим текст и...и вот у меня никак не получается оттуда выдернуть href
Откуда???
Приведите код HTML текста.


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

madmasles [?]
У нас на форуме эти крайние теги вроде <DIV class=bordercolor>...</DIV>.
Это контейнеры самих постов.
Все начинается с
Код:
 <div class="tborder" id="forumposts">
в нём вся информация относящаяся к данной теме "Нужна идея (работа с форумом)"
Вот её и нужно разбирать.
 
Автор
R

Ranos1982

Новичок
Сообщения
130
Репутация
1
Копаю дальше..

Код:
Global $oIE
;~ форум - http://www.exbii.com
$oIE = _IEAttach('exbii')

$oLinks = _IETagNameGetCollection($oIE,'TD')   ; перебираем теги TD
;~ $oLinks = _IELinkGetCollection($oIE)
$iNumLinks = @extended

For $oLink In $oLinks

    If $oLink.rel == 'nofollow' Then            ; для примера хотя бы пусть на совпадение условие,если совпало то
		MsgBox (16,'нашли!',$oLink.rel )        ; то смотри,что этот тег (TD) содержит.
;~ 		$href = _IETagNameallGetCollection($oLink)
		MsgBox (16,'нашли!',$oLink.href)             ; но тут ошибка

	   Exit
   EndIf

Next



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

Ссылки все вытянуть могу.Но както нужно условие на сравнение с текстом сообщения.Еще проблема наверно в том,что в одном теге (DIV) -еще куча других тегов...

Совсем забыл - вот тестовая тема...
http://www.exbii.com/showthread.php?p=29227327
 
Автор
R

Ranos1982

Новичок
Сообщения
130
Репутация
1
Garrett , вот , вот я это все понимаю,нокак мне перебирать именно контейнеры и если я там нахожу нужный текст,то именно из того контейнера вытягивать все остальное.Вот не пойму и все( :(
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Ranos1982
Вот вам пример. Он получает все ссылки с описанием раздела "Последние темы" нашего форума.
Сразу оговорюсь, что этот пример не универсальный!!! Есть множество движков для форумов, и у всех у них разная структура.
И вообще, универсального подхода тут быть не может!

Код:
#include <IE.au3>

$oIE = _IECreate('http://autoit-script.ru')
$oTable = _IETableGetCollection ($oIE, 1)
$oLinks = _IELinkGetCollection($oIE)
Dim $aLink[@extended][2], $n

For $oLink In $oLinks
	
	$sLink = StringStripWS(_IEPropertyGet($oLink, 'InnerText'), 3)
	If $sLink <> '' Then
		$aLink[$n][0] = $sLink
		$aLink[$n][1] = $oLink.href
	EndIf
	
	$n += 1
Next

$aTableData = _IETableWriteToArray ($oTable, True)

Dim $Num = 0

$aPosts = StringSplit($aTableData[1][0], @LF)

ConsoleWrite('Раздел: ' & $aTableData[0][0] & @CRLF)
ConsoleWrite('=============================' & @CRLF)

For $i = 0 To UBound($aPosts) -1
	If $i = 0 Then ContinueLoop
	ConsoleWrite(StringStripWS($aPosts[$i], 3) & @CRLF)
	
	For $ii = 0 To UBound($aLink) -1
		If $aLink[$ii][0] = StringStripWS($aPosts[$i], 3) Then
			ConsoleWrite($aLink[$ii][1] & @CRLF)
			ExitLoop
		EndIf
	Next

	ConsoleWrite('--------' & @CRLF)
Next


P.S. Пример не идеален (сделан на скорую руку), возможны и другие решения.
 
Автор
R

Ranos1982

Новичок
Сообщения
130
Репутация
1
Garrett
спасибо большое,но это немного не то,простите я чтото запутался.

Не совсем понимаю,я не могу быть таким тупым)))
нужно както по содержаю сообщению - вытаскивать ссылку на ответ или на изменение поста именно того что содержит слово какоето (допустим то что во втором сообщение )

вот тема примерочная на форуме

http://www.exbii.com/showthread.php?p=29227327

я уже с ошибками пишу простите
 
Автор
R

Ranos1982

Новичок
Сообщения
130
Репутация
1
Garrett

вы бы несмогли свой код немного подкоментировать если Вам не трудно
особенно где массивы,я так понимаю это двухмерные..
 
Автор
R

Ranos1982

Новичок
Сообщения
130
Репутация
1
В общем получилось...таким образом...кто что думает ?

Код:
$oIE = _IECreate('http://www.exbii.com/showthread.php?p=29227327')
;~ $oIE = _IEAttach('exbii')
$oLinks = _IETagNameGetCollection($oIE,'TD')

;~ link to edit the message

For $oLink In $oLinks
;~ 	MsgBox (16,'нашли!',$oLink.outertext )
    If StringInStr ($oLink.outertext,'sorry,,,') Then
        $oLinks_2 = _IETagNameGetCollection($oLink,'a')
        For $oLink_2 In $oLinks_2
            MsgBox (16,'нашли!',$oLink_2.outertext )
            MsgBox (16,'нашли!',$oLink_2.href)
        Next
    EndIf
Next
 
Верх