Что нового

[Автоматизация] Копирование нужной информации со страницы

Evochka Turkova

Новичок
Сообщения
39
Репутация
0
И снова доброго времени суток!!! :smile: :smile: :smile:

Подскажите как добавить условие, что бы при копировании страницы, выбирался только нужный текст. У меня имеется вот такой скриптик, не помню кто его делал, он копирует всю страницу:

Код:
#include <IE.au3>

$oIE = _IECreate('about:blank') ; Открывает браузер
WinSetState("[CLASS:IEFrame]", "", @SW_MAXIMIZE)

$hfile = FileOpen('log1.txt', 1)
$hURL = FileOpen('url.txt', 0); Файл со ссылками

While 1
    $sLine = FileReadLine($hURL)
    If @error = -1 Then ExitLoop
    _IENavigate($oIE, $sLine)
	Sleep (3000)
    $sText = _IEBodyReadText($oIE) ; Читает содержимое HTML, без тегов.
;~     MsgBox(4096, 'Просмотр содержимого HTML', $sText)
    FileWrite($hfile,  @CRLF & @CRLF & '----------------------------------------------------------------' &  @CRLF & @CRLF & $sText)
WEnd

FileClose($hfile)
FileClose($hURL)


А мне нужно, чтобы он копировал только то, что находится между строками 1 и 2, к примеру:

Код:
Строка 1 
Нужный текст
Строка 2

:'(
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
В любом случаи стоит скопировать весь текст со страницы. А потом с помощью команды
Код:
_StringBetween
; Или 
StringRegExp

Вытаскивать то, что вам необходимо.
 
Автор
E

Evochka Turkova

Новичок
Сообщения
39
Репутация
0
Не совсем поняла как копировать нужный текст :'( :'( :'(
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Пожалуйста, :( :( :( прекратите плодить смайлики :mad: :mad: :mad: в таком количестве :-X :-X :-X.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Evochka Turkova [?]
Не совсем поняла как копировать нужный текст
Можно так:
Код:
;...
$sText = _IEBodyReadText($oIE) ; Читает содержимое HTML, без тегов.
$aText = StringRegExp($sText, "(?si)Строка 1(.*?)Строка 2", 3); выбираем нужный текст ;=====>добавить
If Not @error Then $sText = $aText[0] ;=====>добавить
;...
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Или так
Код:
#include <String.au3>
;...
$sText = _IEBodyReadText($oIE)
$sText = _StringBetween($sText , "Строка 1", "Строка2")
;...
 
Автор
E

Evochka Turkova

Новичок
Сообщения
39
Репутация
0
alex33 сказал(а):
Evochka Turkova [?]
Не совсем поняла как копировать нужный текст
Можно так:
Код:
;...
$sText = _IEBodyReadText($oIE) ; Читает содержимое HTML, без тегов.
$aText = StringRegExp($sText, "(?si)Строка 1(.*?)Строка 2", 3); выбираем нужный текст ;=====>добавить
If Not @error Then $sText = $aText[0] ;=====>добавить
;...

Спасибочки, как обычно вы на высоте!!!!


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

edyapd сказал(а):
Или так
Код:
#include <String.au3>
;...
$sText = _IEBodyReadText($oIE)
$sText = _StringBetween($sText , "Строка 1", "Строка2")
;...

К сожалению в документ ничего не копируется...
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Evochka Turkova сказал(а):
К сожалению в документ ничего не копируется...
Читаем справку по функции:
Код:
_StringBetween

Возвращает массив, где $array[0] содержит первую найденную строку.

Значит надо сделать примерно также, как в моём коде (RegExp тоже массив возвращает):
Код:
$aText = _StringBetween($sText , "Строка 1", "Строка2")
If Not @error Then $sText = $aText[0]; записать в переменную $sText первое совпадение (первый элемент массива, отсчёт начинается с нуля)

И будет работать.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
alex33 сказал(а):
Читаем справку по функции:
Код:
_StringBetween

Возвращает массив, где $array[0] содержит первую найденную строку.
Это уже я накосячил, поторопился.
В принципе оба кода выполняют одинаковые действия. Мне просто _StringBetween больше нравится, так как не надо заморачиваться с pattern.
 
Верх