Нужно создать достаточно оптимальный по скорости работы алгоритм на php, который будет делать разбор части html структуры. На вход уже подается часть html ( содержимое div id="root").
1. Считаем div, следующие за div id="root" , последовательно перебирая и углубляясь внутрь дерева
---<div id="root">
--------<div class="1">
----------<div 1 >
-------------<div class="искомый диф" >
----------------<div class = "a" />
----------------<div class = "b" />
----------------<div class = "c" />
----------------<div class = "d" />
----------------<div class = "e" />
----------------<div class = "f" />
----------------<div class = "g" />
----------------<div class = "h" />
-------------</div>
--------</div>
--------<div class="2" >
------------<div class = "f" />
------------<div class = "g" />
------------<div class = "h" />
--------<div class="3" />
---</div>
3. определяем и находим искомый div, содержащий наибольшее количество вложенных div первого уровня
4. перебираем и анализируем вложенные div первого уровня внутри искомого родительского div
5. ищем tag <a href > с вложенным внутри <h3> тегом.
6. если в данном div теге 1 или 2 <a href /> - сохраняем первую ссылку в итоговый список, если больше - пропускаем.