-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Обработка многострочного HTML кода с одинаковыми строчками.
Нужно вытащить из HTML кода строчки выделенные красным, заготовки нет вообще потому, что всё остановилось на этом :) $sREAD_HTML = _INetGetSource('http://cstrike.***.net/monitoring/') - дальше StringRegExp после него пустой массив или вообще ничего :(
Сложность заключается в том, что темеже самыми тегами прописана статистика для других серверов их много.
Код:
<td>
<img alt='' src='http://cstrike.****.net/monitoring/lgsl_files/other/icon_online.gif' title='ONLINE' />
</td>
<td title='GAME LINK' style='text-align:right'>
192.168.0.101:27020
</td>
<td title='TritiumNet Left 4 Dead' style='text-align:left'>
<a href='http://cstrike.****.net/monitoring/lgsl_files/../?s=4'><div style='width:100%; overflow:hidden; height:1.3em'>
TritiumNet Left 4 Dead - <!----> Эта строчка не меняется !!
</div>
</a>
</td>
<td style='white-space:nowrap; text-align:left'>
l4d_hospital01_apartment
</td>
<td style='white-space:nowrap; text-align:right'>
0 / 10
</td>
У меня вообще никаких мыслей по этому поводу. Хотябы вытащить карту и колличество игроков (последняя и пред последняя строчки выделенные красным)
|
Код:
#include <Array.au3>
$sREAD_HTML = ClipGet() ;Это вместо _INetGetSource
$sPattern1 = "<td title='GAME LINK' style='text-align:right'>\s+(.*?)\s+</td>"
$sPattern2 = _
"<td title='TritiumNet Left 4 Dead' style='text-align:left'>\s+<a href='.*'>" & _
"<div style='width:100%; overflow:hidden; height:1.3em'>\s+(.*?)\s+</div>"
$sPattern3 = "<td style='white-space:nowrap; text-align:left'>\s+(.*?)\s+</td>"
$sPattern4 = "<td style='white-space:nowrap; text-align:right'>\s+(.*?)\s+</td>"
$aRet = StringRegExp($sREAD_HTML, '(?s)' & $sPattern1 & '.*' & $sPattern2 & '.*' & $sPattern3 & '.*' & $sPattern4, 3)
_ArrayDisplay($aRet)
|
Вложений: 1
спасибо конечно ... но вот что там ... я сам не разберусь :(
|
Там то, что попадает под критерий шаблона. Я проверял на том тексте что в первом сообщений, с ним всё отлично работает (в массив попадают именно строки выделенные красным цветом).
|
Цитата:
Цитата FlatX007
Сложность заключается в том, что темеже самыми тегами прописана статистика для других серверов их много. »
|
Строки то попадают =), только с других серверов ....на этой странице прописана ещё статистика для пяти серверов.
Посмотри ПМ ;)
Проблема решилась во так:
Код:
#include <Array.au3>
#include <File.au3>
#include <INet.au3>
Dim $aReadHTML
Global $ifForStringSearch = False, $sNewFileHTML
$sURL_LINK = 'http://cstrike.*****.net/monitoring/'
$sTEMP_FILE = _TempFile()
$sTEMP_FILE2 = _TempFile()
$sREAD_HTML = _INetGetSource($sURL_LINK)
If Not (@error) Then
FileWrite($sTEMP_FILE, $sREAD_HTML)
_FileReadToArray($sTEMP_FILE, $aReadHTML)
For $i = 0 To UBound($aReadHTML) - 1
$sForString = StringInStr( StringStripWS($aReadHTML[$i], 1), "192.168.0.101:27020")
If $sForString = 1 Then
$ifForStringSearch = $i
ExitLoop
EndIf
Next
If Not $ifForStringSearch = False Then
For $i = $ifForStringSearch To $ifForStringSearch + 20
$sNewFileHTML &= $aReadHTML[$i] & @CRLF
Next
EndIf
FileWrite($sTEMP_FILE2, $sNewFileHTML)
$sPattern3 = "<td style='white-space:nowrap; text-align:left'>\s+(.*?)\s+</td>"
$sPattern4 = "<td style='white-space:nowrap; text-align:right'>\s+(.*?)\s+</td>"
$aRet = StringRegExp(FileRead($sTEMP_FILE2), '(?s)' & $sPattern3 & '.*' & $sPattern4, 3)
_ArrayDisplay($aRet)
EndIf
FileDelete($sTEMP_FILE)
FileDelete($sTEMP_FILE2)
|
Цитата:
Цитата FlatX007
Проблема решилась во так »
|
Отлично, я вот только не понял для чего нужны временные файлы? :dont-know
|
По другому не получилось ... у меня. Я думаю если исправить то на работоспособность это не повлияет.
|
Цитата:
Цитата FlatX007
По другому не получилось »
|
Код:
#include <Array.au3>
#include <File.au3>
#include <INet.au3>
Dim $aReadHTML
Global $ifForStringSearch = False, $sNewFileHTML
$sURL_LINK = 'http://cstrike.*****.net/monitoring/'
$sREAD_HTML = _INetGetSource($sURL_LINK)
If Not @error Then
$aReadHTML = StringSplit(StringStripCR($sREAD_HTML), @LF)
For $i = 1 To UBound($aReadHTML) - 1
$sForString = StringInStr(StringStripWS($aReadHTML[$i], 1), "192.168.0.101:27020")
If $sForString = 1 Then
$ifForStringSearch = $i
ExitLoop
EndIf
Next
If Not $ifForStringSearch = False Then
For $i = $ifForStringSearch To $ifForStringSearch + 20
$sNewFileHTML &= $aReadHTML[$i] & @CRLF
Next
EndIf
$sPattern3 = "<td style='white-space:nowrap; text-align:left'>\s+(.*?)\s+</td>"
$sPattern4 = "<td style='white-space:nowrap; text-align:right'>\s+(.*?)\s+</td>"
$aRet = StringRegExp($sNewFileHTML, '(?s)' & $sPattern3 & '.*' & $sPattern4, 3)
_ArrayDisplay($aRet)
EndIf
|
Время: 21:37.
© OSzone.net 2001-