[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Интересная задача на логику: найти название DIV
sx000
Нужно найти ID DIV или его название или класс который содержит в себе самую большую группу картинок. Логика которую хочу написать:
- Получили все названия DIV с страницы в массив
- начинаем выгребать из каждого по циклу картинки
$ret = $html->find('#div_n img'); 

и загонять результат count в массив где ключ является название дива.
Далее я выбираю Max(array) те максимальное число из массива ... беру ключ и подставляю его для повторного парсинга, ну и имею группу с наибольшим числом картинок.

Я столкнулся с такими логическими камнем:
- А что Если он посчитает один общий или самый первый див в котором находиться куча этих групп? А мне это не нужно, как это обойти, без шаблонно - логически. Брать как раз и нужно чем ближе к дереву группу тем лучше, а не к концу ветки.



Спустя 27 минут, 5 секунд (13.12.2011 - 10:18) redreem написал(а):
1. выбрать все картинки
2. выбирать рекрсивно парент до тех пор, пока парент не окажется дивом начиная с каждой картинки
3. ++ элемент массива с ключем по названию дива
4. найти максимальный в получившемся массиве

Спустя 20 минут, 15 секунд (13.12.2011 - 10:38) sx000 написал(а):
Цитата (redreem @ 13.12.2011 - 07:18)
1. выбрать все картинки
2. выбирать рекрсивно парент до тех пор, пока парент не окажется дивом начиная с каждой картинки
3. ++ элемент массива с ключем по названию дива
4. найти максимальный в получившемся массиве

не понял про второе, можно в коде ...

Спустя 1 минута, 40 секунд (13.12.2011 - 10:40) redreem написал(а):
в коде времени нет строчить.

Спустя 5 минут, 57 секунд (13.12.2011 - 10:45) redreem написал(а):
2-й пункт чтоли непонятен? ну взял картинку, берешь ее парент, если парент не див, берешь партент от парента и т.д., пока не наткнешься на див.

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

Спустя 1 час, 24 минуты, 1 секунда (13.12.2011 - 12:09) sx000 написал(а):
<div=10>

<div
=30>
<div
=50><div=32><img ...></div></div>
<div
=32><img ...></div>
<div
=35><img ...></div>
</div>

<div
=31>
<div
=32><img ...></div>
<div
=32><img ...></div>
</div>

</div>

Ну вот мне надо выбрать div=30 по логике, в вашем случае он дойдет до <div=10> и признает его дивом в котором больше всего картинок. Или я чего то не понял. Эту проблему как и путаюсь решить - безшаблонно!

Спустя 6 минут, 34 секунды (13.12.2011 - 12:16) Игорь_Vasinsky написал(а):
biggrin.gif хитрый какой.. под задачку замаскировался.

Спустя 16 минут, 2 секунды (13.12.2011 - 12:32) sx000 написал(а):
а что это технологический процесс? smile.gif Мне просто логика нужна не более того ... я вот не могу осилить, но надо smile.gif

Спустя 16 минут, 36 секунд (13.12.2011 - 12:49) redreem написал(а):
в изначальном условии не уточнялось, что при подсчете нужно учитывать и вложенные дивы. ну да ладно. тогда мое решение просто удлиняется на прогоны полученных в первом варианте дивов по аналогии с картинками. эти прогоны необходимо будет делать до тех пор, пока у дивов будут находиться паренты-дивы smile.gif

Спустя 2 минуты, 32 секунды (13.12.2011 - 12:51) sx000 написал(а):
<div=10> > <div=30> в вашей схеме парент <div=10> найден, значит <div=10> является искомым дивом. Но это не так искомый див <div=30>

Спустя 6 минут, 21 секунда (13.12.2011 - 12:58) redreem написал(а):
Цитата
<div=10>

<div=30>
<div=50><div=32><img ...></div></div>
<div=32><img ...></div>
<div=35><img ...></div>
</div>

<div=31>
<div=32><img ...></div>
<div=32><img ...></div>
</div>

</div>


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

Спустя 14 минут, 46 секунд (13.12.2011 - 13:12) sx000 написал(а):

<div=10>

<div
=30>
<div
=50><div class='net'><img ...></div></div>
<div
class='net'><img ...></div>
<div
class='net'><img ...></div>
</div>

<div
=31>
<div
class='net'><img ...></div>
<div
class='net'><img ...></div>
</div>

</div>



Даже в таком случае у вас <div=10> будет искомым. Вы же ищите пока родитель не кончиться или не перестанет быть дивом. Не проще мерить сколько картинок в каждом диве? Будто то класс или ID... Задача то просто не дать скрипту понять <div=10> что это искомый див. Как бы как найти где больше картинок я и так понимаю. Я же пишу - безшаблонно, источник то может быть любой. А если будет такой код? Допустим мы указали ему что если главный парент <div=10> имеет все картинки а остальные нет, то берем другой источник:

<div=10>

<div
=30>
<div
=50><div=32><img ...></div></div>
<div
=32><img ...></div>
<div
=35><img ...></div>
</div>

</div>


искомый <div=30> :) кроче говоря граблей тут очень много. Но по вашей логике не как не выруливает <div=30> а выруливает <div=10> А это и так можно выяснить простыми измерениями сколько картинок в каждом диве и выбрать максимальный как я писал выше.

Спустя 1 минута, 26 секунд (13.12.2011 - 13:14) redreem написал(а):
гы... ну поставить условие, что если в формируемом массиве оказался только 1 див - то взять предыдущий массив smile.gif

Спустя 3 минуты, 11 секунд (13.12.2011 - 13:17) sx000 написал(а):
вообще заплутаться ...какой массив формируем? Надо говорить на php smile.gif на русский он плохо переводится smile.gif для понимания

Спустя 2 минуты, 56 секунд (13.12.2011 - 13:20) redreem написал(а):
ну будет время свободное - напишу ради интереса, если еще не решишь

Спустя 2 минуты, 56 секунд (13.12.2011 - 13:23) redreem написал(а):
что на выходе? класс, айдишник, иной идентификатор?

Спустя 1 минута, 34 секунды (13.12.2011 - 13:24) sx000 написал(а):
на выходе если класс то id_class= если айдишник то div_id= а там ловить можно будет что заполнено а что нет ... думаю так логично smile.gif

Спустя 7 минут, 13 секунд (13.12.2011 - 13:32) redreem написал(а):
вот мне непонятно - задача подсчитать топологически дивы с максимальным количеством карртинок или все-же дивы с одним классом рассматриваются как один див? smile.gif во втором случае получается конечно интересное условие, толко тогда поясни практическое приложение этого поиска smile.gif

Спустя 22 минуты, 20 секунд (13.12.2011 - 13:54) sx000 написал(а):
есть сайты с фотками - мелкие превью, по большей части вверху у многих расположены лучшие превьюшки или релейтид ... а мне надо доставать только контентные src. А у них одно отличие, что их больше в блоке, и они висят отдельным либо классом либо ID .

Спустя 2 минуты, 51 секунда (13.12.2011 - 13:57) sx000 написал(а):
задача выявить группы картинок и выбрать группу с максимальным содержанием картинок. Группы могу делиться в теории div только.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.