Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] извлечь строчку из HTML (http://forum.oszone.net/showthread.php?t=139194)

FlatX007 03-05-2009 03:23 1109452

извлечь строчку из HTML
 
Помогите разобраться ...нужно извлечь 4 элемента из HTML кода
Я так понял это делается функцией StringRegExp

Строка:

Код:

          </tr><tr bgcolor=#f0f1f3 align=center><td ><font class=z11 size=-1>user</font></td><td ><font class=z11 size=-1>462956552413 *(рандомное число)</font></td><td><font class=z11 size=-1>Активна</font></td><td><font class=z11 size=-1><b>90.79 руб.</b></font></td><td><font class=z11 size=-1>15.58 (Мб)</font></td><td><font class=z11 size=-1>200 (Мб)</font></td><td><font class=z11 size=-1>184.42 (Мб)</font></td></tr><tr bgcolor=#97999c align=center>
Нужны элементы из кода
* 90.79 руб.
* 15.58
* 200
* 184.42

Лазил по мануалу и по темам кое что понял но ничего неполучается ... мож кто поможет а ? :angel:

SyDr 03-05-2009 11:27 1109540

$Sp - нужный ебе шаблон для поиска
Результаты будут в Result[0] Result[1] Result[2] Result[3]

Код:

$Text  ='</tr><tr bgcolor=#f0f1f3 align=center><td ><font class=z11 size=-1>user</font></td><td ><font class=z11 size=-1>462956552413 *(рандомное число)</font>'
$Text &='</td><td><font class=z11 size=-1>Активна</font></td><td><font class=z11 size=-1><b>90.79 руб.</b></font></td><td><font class=z11 size=-1>15.58 (Мб)</font>'
$Text &='</td><td><font class=z11 size=-1>200 (Мб)</font></td><td><font class=z11 size=-1>184.42 (Мб)</font></td></tr><tr bgcolor=#97999c align=center>'
$SP= 'Активна<.*?<b>(.*?)</b>.*?size=-1>(.*?)</font>.*?size=-1>(.*?)</font>.*?size=-1>(.*?)</font>'

$Result = StringRegExp($Text, $Sp, 1)
for $i = 0 to UBound($Result) - 1
    Msgbox(4096, $i, $Result[$i])
Next


Creat0R 03-05-2009 11:36 1109544

Код:

$sHtml_Var = "</tr><tr bgcolor=#f0f1f3 align=center><td ><font class=z11 size=-1>user</font></td><td ><font class=z11 size=-1>462956552413 *(рандомное число)</font></td><td><font class=z11 size=-1>Активна</font></td><td><font class=z11 size=-1><b>90.79 руб.</b></font></td><td><font class=z11 size=-1>15.58 (Мб)</font></td><td><font class=z11 size=-1>200 (Мб)</font></td><td><font class=z11 size=-1>184.42 (Мб)</font></td></tr><tr bgcolor=#97999c align=center>"

$aRet = StringRegExp($sHtml_Var, '(?i).*?</td><td><font class=z11 size=-1>(.*?)</font>.*?', 3)

$sVar_1 = StringRegExpReplace($aRet[1], "<b>(.*)</b>", "\1")
$sVar_2 = StringRegExpReplace($aRet[2], "(.*) \(.*\)", "\1")
$sVar_3 = StringRegExpReplace($aRet[3], "(.*) \(.*\)", "\1")
$sVar_4 = StringRegExpReplace($aRet[4], "(.*) \(.*\)", "\1")

ConsoleWrite($sVar_1 & @CRLF & $sVar_2 & @CRLF & $sVar_3 & @CRLF & $sVar_4 & @CRLF)


FlatX007 03-05-2009 12:42 1109574

Я вобщем сам маленько разобрался ... дело в том что нужно выудить КОД из текстового документа в который записан HTML код.
Файл stat.tmp содержит HTML код страницы.

Написал вот что:
Код:

#include <file.au3>

$nOffset = 1
$Random = Random(100,1000000)
$TempRandom = @TempDir & '\' & $Random
DirCreate($TempRandom)
FileCopy(@TempDir & '\' & "stat.tmp", $TempRandom & '\' & "balanse.txt")
$file = FileOpen($TempRandom & '\' & "balanse.txt",0)
$HTML = FileRead($file)
$f = StringStripWS($HTML, 8)

While 1
$array = StringRegExp($f, '<td><font class=z11 size=-1><b>(.*?)</b></font></td><td><font class=z11 size=-1>', 1, $nOffset)

    If @error = 0 Then
        $nOffset = @extended
    Else
        ExitLoop
    EndIf
    for
$i = 0 to UBound($array) - 1
        msgbox(0, "RegExp Test with Option 1 - " & $i, $array[$i])
    Next
WEnd

Вроде $f = StringStripWS($HTML, 8) - это лишнее ..

Что я написал нетак ?? неработает .... :(

Creat0R 03-05-2009 16:27 1109727

Цитата:

Цитата FlatX007
Вроде $f = StringStripWS($HTML, 8) - это лишнее »

Конечно, оно заменит все пробелы в переменной.

Цитата:

Цитата FlatX007
Что я написал нетак »

А зачем там цикл и offset?

Код:

#include <File.au3>

$Temp_Dir = _TempFile()
FileCopy(@TempDir & '\stat.tmp', $Temp_Dir & '\balanse.txt', 1+8) ;8 это чтобы при копировании папка создавалась

$sHTML = FileRead($Temp_Dir & '\balanse.txt')

$avArray = StringRegExp($sHTML, '(?i).*?<td><font class=z11 size=-1>(.*?)</font>.*?', 3)

For $i = 1 To UBound($avArray) - 1
    $avArray[$i] = StringRegExpReplace($avArray[$i], "\A<b>|</b>\z|( \(.*?\))\z", "")

    MsgBox(0, "RegExp Test with Option 1 - " & $i, $avArray[$i])
Next


FlatX007 03-05-2009 17:31 1109754

Creat0R - Спасибо, вы как всегда великолепны :)

а offset я скопировал из мануала - хотел выяснить как работает функция ... StringRegExp
Вобщем теперь разберусь по образцу.


Время: 18:56.

Время: 18:56.
© OSzone.net 2001-