Что нового

Удаление данных из исходного кода страницы

iwak

Новичок
Сообщения
28
Репутация
0
Здравствуйте.

Как удалить заранее известный текст из исходного кода страницы, заключенный в тегах?

Например отсюда

Код:
<span Текст </span>
Код:
<div 123 </div>

И удалить всю приведенную ниже ссылку из исходного кода страницы:

Код:
<div class="p" id="1g486hlf612" style="margin-bottom:20px; display:none">

Если в ней есть эта часть "display:none". (Значение id заранее неизвестно).

В Firefox можно найти нужный текст/элемент и удалить его из исходного кода страницы, но нужно научиться делать это не вручную, а автоматически средствами autoit.
 
Автор
I

iwak

Новичок
Сообщения
28
Репутация
0
Не работает.

Код:
$sHTML = _IEDocReadHTML($oIE)
$sHTML = StringRegExpReplace($sHTML, '<div[^>]+display:none[^>]+>', "")
_IEDocWriteHTML($oIE, $sHTML)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
iwak,
Попробуйте сделать примерно так (удаляются все дочерние теги, находящиеся внутри тегов div, который имеет стиль display:none).
Код:
#include <IE.au3>
;~ Без проверок на ошибки!
Local $oIE, $oDivs, $sUrl = @ScriptDir & '\1.html';поменяйте на адрес Вашей страницы

$oIE = _IECreate($sUrl, 0, 0)
$oDivs = _IETagNameGetCollection($oIE, 'div')
For $oDiv In $oDivs
	If $oDiv.currentStyle.GetAttribute('display') == 'none' Then
		_IETagNameAllGetCollection($oDiv)
		ConsoleWrite('before del child: ' & @extended & @LF)
		While IsObj($oDiv.firstChild)
			$oDiv.removeChild($oDiv.firstChild)
		WEnd
		_IETagNameAllGetCollection($oDiv)
		ConsoleWrite('after del child: ' & @extended & @LF)
	EndIf
Next
_IEAction($oIE, 'visible')
 
Автор
I

iwak

Новичок
Сообщения
28
Репутация
0
madmasles Не работает.

Насколько я понимаю, в стандартной справке по IE описана лишь малая часть доступных функций. А где можно найти все доступные команды autoit для IE? Вроде была на форуме ссылка на MSDN, не поделитесь? Очень хочу научиться - редактировать, извлекать, отключать, удалять те или иные части исходного кода страницы.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
iwak
вот ссылка http://msdn.microsoft.com/en-us/library/ie/hh828809 изучай
 
Автор
I

iwak

Новичок
Сообщения
28
Репутация
0
madmasles

Вот полный код.

Код:
<div class="ad-block " id="a4c6v7d59" style="margin-bottom:100px; display:none">
<div class="ad-title">
<span class="point" onclick="window.open('/view=Text2','_blank');">Text2</span>
</div>
<div class="ad-content">
<table cellpadding="100" width="700%">
<tbody><tr>
<td valign="top" width="700">
<img src="http://www.site.ru/2.gif" style="max-height:700px; max-width:700px"></td>
<td valign="top">
</td>
</tr>
</tbody></table>
</div>
<div class="ad-footer">
id222222222222222
</div>
</div>

Таких кусков кода на странице несколько. Некоторые из них скрыты и не отображаются на странице (имеют значение "display:none" в атрибуте "style") как пример выше, а некоторые не имеют "display:none" и их видно на странице.
Нужно кликнуть только по тем, что не имеют "display:none".
Либо удалять все куски кода со страницы, которые содержат display:none, а потом выполнять клик по class="point".
Либо выполнять клик для всех частей кода, кроме тех, что содержат display:none.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
iwak,
У Вас какой IE? У меня 8.
 
Автор
I

iwak

Новичок
Сообщения
28
Репутация
0
Запустил скрипт на машине с IE8, не работает. Вот что в консоли:

Код:
before del child: 1
after del child: 0
before del child: 11
after del child: 0
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
iwak [?]
Нужно кликнуть только по тем, что не имеют "display:none".
Код:
$oDIVs = _IETagNameGetCollection($oIE, 'div')
For $oDIV In $oDIVs
   If StringStripWS($oDIV.className, 3) == 'ad-block' Then
	  If $oDIV.style.display <> 'none' Then
		 $oSPAN = $oDIV.firstChild.firstChild
		 _IEAction($oSPAN, 'click')
	  EndIf
   EndIf
Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
iwak [?]
Нужно кликнуть только по тем, что не имеют "display:none".
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Удаление данных из исходного кода страницы" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.
 
Верх