PHP — простой парсер HTML-дома

Я пытаюсь получить некоторую информацию с веб-сайта, используя PHP Simple HTML Dom Parser. На сайте много таблиц с классом "forumborder2" и внутри них я хочу получить некоторую информацию. В следующем примере мне нужен источник изображения.

<table class="forumborder2" width=100% cellspacing=0 cellpadding=0 border=0 align=center>
        <tr>
            <td class="titleoverallheader2" background="modules/Forums/templates/chunkstyle/imagesnew/forumtop.jpg" style="border-top:0px; border-left:0px; border-right:0px;" width="100%" colspan=7 Align=left> 
                <b>Supernatural </b>(2005)&nbsp;&nbsp; - &nbsp;&nbsp;Enviada por: <b>AlJoSi</b>&nbsp;&nbsp; em 6 de Dezembro, 2011 (22:35:11)
            </td>
        </tr>
        <tr height=25>
            <td class="colour12" align=right width=100>
                <b>Idioma:</b> 
            </td>
            <td width=110 class="colour22"> 
                <img src="modules/Requests/images/fPortugal.png" width=18 height=12 border=0 alt='' title=''>
            </td>
        </tr> </table>

Я сделал следующее:

foreach($html->find('table[class="forumborder2"]')as $tr){
     echo $tr->children(1)->children(1)->src; }

Это всегда дает ошибку: «Попытка получить свойство не-объекта». Если я перейду только к $tr->children(1)->children(1), я смогу получить <img src="modules/Requests/images/fPortugal.png" width=18 height=12 border=0 alt='' title=''>, так почему я не могу получить доступ к атрибуту src.


person Barata    schedule 10.12.2011    source источник
comment
Что такое простой парсер HTML dom? И какая ошибка???   -  person Jon    schedule 10.12.2011
comment
@Jon, Простой PHP-парсер HTML DOM. Изменил пост с ошибкой тоже.   -  person Barata    schedule 10.12.2011


Ответы (1)


Разве вы не можете просто захватить все изображения с помощью HTML Dom Parser? Я не уверен, что вы берете его только из определенного раздела HTML, но если да, вы можете запустить регулярное выражение для источника изображения, чтобы получить те, которые вы ищете; вот фрагмент кода, который может помочь:

// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');

// Find all images 
foreach($html->find('img') as $element) 
   echo $element->src . '<br>';

// Find all links 
foreach($html->find('a') as $element) 
   echo $element->href . '<br>';

надеюсь, это поможет

person Robert Van Sant    schedule 10.12.2011
comment
Это будет мой второй вариант. Я бы предпочел выполнить некоторую обработку, когда я перебираю каждую таблицу forumborder2, а не позже, перебирая массив изображений. - person Barata; 10.12.2011