Разбор html-страницы, которая имеет два разных формата для одних и тех же элементов

На одной и той же странице htmlТребуются два разных формата:

первое:

<div class="gs"><h3 class="gsr"><a href="http://www.example1.com/">title1</a> 

вторая:

 <div class="gs"><h3 class="gsr"><span class="gsc"></span><a href="http://www.example2.com/">title2</a> 

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

 foreach($html->find('h3[class=gsr]') as $docLink){ $link = $docLink->first_child(); echo $link->plaintext; echo $link->href; } 

Solutions Collecting From Web of "Разбор html-страницы, которая имеет два разных формата для одних и тех же элементов"

Из документа, похоже, существует концепция селекторов потомков

 // Find all <td> in <table> which class=hello $es = $html->find('table.hello td'); 

затем

 foreach($html->find('h3[class=gsr] a') as $link) { echo $link->plaintext; echo $link->href; } 

Должен делать свою работу. [Я действительно не знаю simple_html_dom btw;) Просто попробуйте]

РЕДАКТИРОВАТЬ

Существуют также вложенные селектора

 // Find first <li> in first <ul> $e = $html->find('ul', 0)->find('li', 0); 

Так

 foreach($html->find('h3[class=gsr]') as $docTitle) { $link = $docTitle->find('a', 0); //get the first anchor tag echo $link->plaintext; echo $link->href; } 

Следует также работать

Использовать getElementsByTagName($tag);

Он найдет все указанные теги внутри dom …

См. Эту ссылку getElementsByTagName