Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] извлечь строчку из HTML

Ответить
Настройки темы
[решено] извлечь строчку из HTML

Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Помогите разобраться ...нужно извлечь 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

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

Отправлено: 03:23, 03-05-2009

 

Аватара для SyDr

Старожил


Сообщения: 215
Благодарности: 62

Профиль | Отправить PM | Цитировать


$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
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:27, 03-05-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3054
Благодарности: 1008

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
$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)

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:36, 03-05-2009 | #3


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Я вобщем сам маленько разобрался ... дело в том что нужно выудить КОД из текстового документа в который записан 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) - это лишнее ..

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

Отправлено: 12:42, 03-05-2009 | #4


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3054
Благодарности: 1008

Профиль | Сайт | Отправить PM | Цитировать


Цитата 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 16:27, 03-05-2009 | #5


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 17:31, 03-05-2009 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] извлечь строчку из HTML

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - как извлечь строки без html user171078 Программирование и базы данных 0 21-01-2010 23:29
CMD/BAT - [решено] Как прочесть из файла .txt только первую строчку текста. Sdib121 Скриптовые языки администрирования Windows 6 15-08-2009 14:26
[решено] Вставить строчку из одного txt в оределённое место другого txt ZeroCrash AutoIt 7 13-07-2009 07:35
MySQL - [решено] Извлечь данные одним запросом Strange_V Программирование и базы данных 4 20-02-2008 23:18




 
Переход