На одной и той же странице 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; }
Из документа, похоже, существует концепция селекторов потомков
// 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