- Получили все названия DIV с страницы в массив
- начинаем выгребать из каждого по циклу картинки
$ret = $html->find('#div_n img');
и загонять результат count в массив где ключ является название дива.
Далее я выбираю Max(array) те максимальное число из массива ... беру ключ и подставляю его для повторного парсинга, ну и имею группу с наибольшим числом картинок.
Я столкнулся с такими логическими камнем:
- А что Если он посчитает один общий или самый первый див в котором находиться куча этих групп? А мне это не нужно, как это обойти, без шаблонно - логически. Брать как раз и нужно чем ближе к дереву группу тем лучше, а не к концу ветки.
Спустя 27 минут, 5 секунд (13.12.2011 - 10:18) redreem написал(а):
1. выбрать все картинки
2. выбирать рекрсивно парент до тех пор, пока парент не окажется дивом начиная с каждой картинки
3. ++ элемент массива с ключем по названию дива
4. найти максимальный в получившемся массиве
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 написал(а):
хитрый какой.. под задачку замаскировался.
Спустя 16 минут, 2 секунды (13.12.2011 - 12:32) sx000 написал(а):
а что это технологический процесс? Мне просто логика нужна не более того ... я вот не могу осилить, но надо
Спустя 16 минут, 36 секунд (13.12.2011 - 12:49) redreem написал(а):
в изначальном условии не уточнялось, что при подсчете нужно учитывать и вложенные дивы. ну да ладно. тогда мое решение просто удлиняется на прогоны полученных в первом варианте дивов по аналогии с картинками. эти прогоны необходимо будет делать до тех пор, пока у дивов будут находиться паренты-дивы
Спустя 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 див - то взять предыдущий массив
Спустя 3 минуты, 11 секунд (13.12.2011 - 13:17) sx000 написал(а):
вообще заплутаться ...какой массив формируем? Надо говорить на php на русский он плохо переводится для понимания
Спустя 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= а там ловить можно будет что заполнено а что нет ... думаю так логично
Спустя 7 минут, 13 секунд (13.12.2011 - 13:32) redreem написал(а):
вот мне непонятно - задача подсчитать топологически дивы с максимальным количеством карртинок или все-же дивы с одним классом рассматриваются как один див? во втором случае получается конечно интересное условие, толко тогда поясни практическое приложение этого поиска
Спустя 22 минуты, 20 секунд (13.12.2011 - 13:54) sx000 написал(а):
есть сайты с фотками - мелкие превью, по большей части вверху у многих расположены лучшие превьюшки или релейтид ... а мне надо доставать только контентные src. А у них одно отличие, что их больше в блоке, и они висят отдельным либо классом либо ID .
Спустя 2 минуты, 51 секунда (13.12.2011 - 13:57) sx000 написал(а):
задача выявить группы картинок и выбрать группу с максимальным содержанием картинок. Группы могу делиться в теории div только.