Форумы Форум www.proxomitron.ru
Все о программе Proxomitron
Главная  • FAQ для форума  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Личные сообщения  •  Вход
 Баннер внутри форума на aqa.ru
 Сайт -> Форумы » Помогите убрать баннер...
Следующая тема
Предыдущая тема

Новая тема  Ответить
Автор Сообщение
AlexeiK
Гость





СообщениеДобавлено: Вт, Авг 07 2012 17:22 Цитировать |  |  | 

aqa.ru/forum/obzoryi-ptichego-ryinka-112416-page1
для примера.
я уже пробовал отловить таблицу в которой этот баннер сидит, но NEST(table,/table) не может захватить ее всю. видимо специальные ошибки внутри разметки есть.
как быть?
К началу
AlexeiK
Гость





СообщениеДобавлено: Вт, Авг 07 2012 17:24 Цитировать |  |  | 

только забыл упомнять, я имею ввиду баннер Google

<table *>$INEST(<table*>,*<div class="smalltxt">\1*Google*\2</div>*,</table>)</table>

вот так ловлю таблицу с ним.
тест проходит когда есть только эта таблица.
но этот фильтр нужно использовать как я понял с границами.
и там я не знаю как сделать.
К началу
AlexeiK
Гость





СообщениеДобавлено: Ср, Авг 08 2012 11:06 Цитировать |  |  | 

вот все таки сделал.
не знал что в scope тоже работают команды NEST

Name = "aqa.ru yandex"
Active = TRUE
Multi = TRUE
URL = "aqa.ru"
Bounds = "$NEST(<table*>,</table>)"
Limit = 6000
Match = "$NEST(<table*>,*<div class="mediumtxt" id="yandex_ad"></div>*,</table>)"
Replace = "\1"

Name = "aqa.ru google"
Active = TRUE
Multi = TRUE
URL = "aqa.ru"
Bounds = "$NEST(<table*>,</table>)"
Limit = 6000
Match = "$NEST(<table*>,*src="pagead2.googlesyndication.com/pagead/show_ads.js">*,</table>)"
Replace = "\1"

вот фильтры.
К началу
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Чт, Авг 09 2012 20:18 Цитировать |  |  | 

Нет там и так рекламы. Конечно, при наличии в AdList соответствующих записей:

Цитата:
([^/]++.|)googlesyndication.com/pagead/
([^/]++.|)google-analytics.com/
([^/]++.|)googleadservices.com/
pagead?.googlesyndication.com/

mc.yandex.ru/
bs.yandex.ru/
yabs.yandex.ru/
click.yandex.ru/
clck.yandex.ru/
awaps.yandex.ru/
an.yandex.ru/


(Для данного сайта достаточно двух выделенных.)
К началу Профиль Сообщение
AlexeiK
Гость





СообщениеДобавлено: Пт, Авг 10 2012 12:46 Цитировать |  |  | 

Я не то, чтобы про рекламу.
Я про layout постов в топиках.
Там есть посты пустышки от рекламы.
Вот их и я убирал.
К началу
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Пт, Авг 10 2012 22:08 Цитировать |  |  | 

Ах лойаут... ;)

Тогда вот версия покороче:

Код:
Name = "Aqa.ru forum cleaner {site}"
Active = TRUE
URL = "www.aqa.ru/forum/"
Limit = 777
Match = "<table width="99%" border="0" align="center" cellpadding="0" cellspacing="0">"
        "( $NEST(<tr>,</tr>) <tr> $NEST(<td,</td>) <td[^>]+> <table[^>]+> <tbody><tr class="offlight">)\1"
Replace = "<table style="display:none">"
          "\1"


Идея в том, чтобы не пытаться собрать в памяти весь кусок кода, содержащегося внутри нужного элемента, а нейтрализовать этот элемент в самом начале, как только его можно различить.

ПС: Помятуя, какая стрёмная тут каптча, рекомендую зарегистрироваться и больше её не видеть.
К началу Профиль Сообщение
Alexei
Newbee
Newbee


Зарегистрирован: 11.07.2005
Сообщения: 5

СообщениеДобавлено: Вт, Авг 14 2012 11:34 Цитировать |  |  | 

Да, рег то давно уже есть Smile

Только не понятно, как трактовать совет, по нейтрализации.
По моему представлению, выкусывается все что между <table> и потом уже ищется.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Ср, Авг 15 2012 09:48 Цитировать |  |  | 

Alexei писал(а):
По моему представлению, выкусывается все что между <table> и потом уже ищется.

Это вариант самый понятный, но не универсальный: бывают фрагменты безумных размеров, которые не влезают в буфер. Да и производительность лучше, если проверяемые фрагменты небольшие.

Вместо этого достаточно найти тег в начале фрагмента и сделать так, чтобы он сам отключил своё содержимое.

Типичный пример:
Код:
<div id='advert'> ... 100500 строк шлака </div>

Вместо того, чтобы забивать в буфер весь кусок и вычислять, какой из </div> его замыкает, достаточно найти 20 байт в начале фрагмента и заменить на <div style='display:none'>.

На Aqa ситуация несколько сложнее: убираемый фрагмент определяется не по самому началу, а по более далёким тегам (class="offlight"). Но всё равно, как видно по лимитам, проверять приходится значительно меньше кода и нет необходимости попадать точно в закрывающий тег.
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




Следующая тема
Предыдущая тема
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


P o w e r e d b y p h p B B © p h p B B G r o u p :: T h e m e b a s e d o n FI T h e m e :: Часовой пояс: GMT + 3