Что нового

[Данные, строки] Копирование куска текста из HTML-кода страницы

coldmine

Новичок
Сообщения
19
Репутация
1
Приветствую, участники сообщества.
Натолкните на мысль, если кто знает следующий вопрос
имеется вэбстраница. требуется из ее кода скопировать кусок текста длиной 128 символов.
алгоритм такой: ищем в коде страницы набор из 7 символов ',0,0,'. Эти символы уникальны и встречаются в коде только один раз. и встречаются обязательно. нет такого чтоб их не было. далее после того как эти символы найдены требуется скопировать 128 символов, которые находятся левее указанного набора из 7 символов. Для наглядности приведу код и необходимый результат.
Вот то, что имеется

([2,'44F9B9C4ABC1B81C1FF9D6A8551EDE3DD7366AFE31C2O87C7AC341EDDB47AAO74BF9A81B88D3CDO9A4814199657CCCO64CBICD34O653876D2D679O1D188BA52E',0,0,'Onbux,Join
today','Unique design,best referrals ',0,0,3,1]);dr_l

А вот то, что должно получиться

44F9B9C4ABC1B81C1FF9D6A8551EDE3DD7366AFE31C2O87C7AC341EDDB47AAO74BF9A81B88D3CDO9A4814199657CCCO64CBICD34O653876D2D679O1D188BA52E
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
coldmine
Мой вариант:

Код:
; НАЧАЛО

 $ADDR="disk:\folder\name.htm"

 $FILE=FileOpen($ADDR,0)
 $TEXT=FileRead($FILE)
 FileClose($FILE)

 $P=StringInStr($TEXT,",0,0,")
 If ($P=0) Or ($P<128) Then
  MsgBox(0,"","Подстрока не найдена...")
  Exit
 EndIf

 $P=$P-128-1

 $S=StringMid($TEXT,$P,128)

 MsgBox(0,"",$S)

; КОНЕЦ
 
Автор
C

coldmine

Новичок
Сообщения
19
Репутация
1
То, что доктор прописал ;D
Так как требуется получить текст из кода странички которая в онлайне, то немного поменял источник ;D

Код:
#include <IE.au3>

$oIE=_IECreate ("Вэб-страница")

$TEXT=_IEDocReadHTML($oIE)
 $P=StringInStr($TEXT,"',0,0,'")
	If ($P=0) Or ($P<128) Then
	  MsgBox(0,"","Подстрока не найдена...")
	  Exit
	EndIf

	$P=$P-128

	$S=StringMid($TEXT,$P,128)

	MsgBox(0,"",$S)
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
А вот то же через Регулярные выражения :
Код:
$sText="([2,'44F9B9C4ABC1B81C1FF9D6A8551EDE3DD7366AFE31C2O87C7AC341EDDB47AAO74BF9A81B88D3CDO9A4814199657CCCO64CBICD34O653876D2D679O1D188BA52E',0,0,'Onbux,Join" & @crlf & _
"today','Unique design,best referrals ',0,0,3,1]);dr_l"

$aRez=StringRegExp($sText,"(.{128})',0,0,'",1)
MsgBox(0,'Результат',$aRez[0])



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

С большой долей уверенности могу утверждать , что перед нужным фрагментом имеется кывычка ( ' ).
Тогда выражение упрощается до :
Код:
$aRez=StringRegExp($sText,"'(.+?)',0,0,'",1)
 
Верх