Показать полную графическую версию : [решено] Обработка многострочного HTML кода с одинаковыми строчками.
FlatX007
27-11-2009, 16:53
Нужно вытащить из 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 (http://www.autoitscript.com/autoit3/docs/functions/ClipGet.htm)() ;Это вместо _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 (http://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm)($sREAD_HTML, '(?s)' & $sPattern1 & '.*' & $sPattern2 & '.*' & $sPattern3 & '.*' & $sPattern4, 3)
_ArrayDisplay($aRet)
FlatX007
27-11-2009, 19:14
спасибо конечно ... но вот что там ... я сам не разберусь :(
вот что там
Там то, что попадает под критерий шаблона. Я проверял на том тексте что в первом сообщений, с ним всё отлично работает (в массив попадают именно строки выделенные красным цветом).
FlatX007
01-12-2009, 16:15
Сложность заключается в том, что темеже самыми тегами прописана статистика для других серверов их много. »
Строки то попадают =), только с других серверов ....на этой странице прописана ещё статистика для пяти серверов.
Посмотри ПМ ;)
Проблема решилась во так:
#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)
Проблема решилась во так »
Отлично, я вот только не понял для чего нужны временные файлы? :dont-know
FlatX007
01-12-2009, 23:42
По другому не получилось ... у меня. Я думаю если исправить то на работоспособность это не повлияет.
По другому не получилось »
#include <Array.au3>
#include <File.au3>
#include <INet.au3>
Dim (http://www.autoitscript.com/autoit3/docs/keywords.htm#Dim) $aReadHTML
Global (http://www.autoitscript.com/autoit3/docs/keywords.htm#Global) $ifForStringSearch = False (http://www.autoitscript.com/autoit3/docs/keywords.htm#False), $sNewFileHTML
$sURL_LINK = 'http://cstrike.*****.net/monitoring/'
$sREAD_HTML = _INetGetSource($sURL_LINK)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) @error (http://www.autoitscript.com/autoit3/docs/macros.htm#@error) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$aReadHTML = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)(StringStripCR (http://www.autoitscript.com/autoit3/docs/functions/StringStripCR.htm)($sREAD_HTML), @LF (http://www.autoitscript.com/autoit3/docs/macros.htm#@LF))
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) UBound (http://www.autoitscript.com/autoit3/docs/functions/UBound.htm)($aReadHTML) - 1
$sForString = StringInStr (http://www.autoitscript.com/autoit3/docs/functions/StringInStr.htm)(StringStripWS (http://www.autoitscript.com/autoit3/docs/functions/StringStripWS.htm)($aReadHTML[$i], 1), "192.168.0.101:27020")
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $sForString = 1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$ifForStringSearch = $i
ExitLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ExitLoop)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) $ifForStringSearch = False (http://www.autoitscript.com/autoit3/docs/keywords.htm#False) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = $ifForStringSearch To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $ifForStringSearch + 20
$sNewFileHTML &= $aReadHTML[$i] & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#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 (http://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm)($sNewFileHTML, '(?s)' & $sPattern3 & '.*' & $sPattern4, 3)
_ArrayDisplay($aRet)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC