Парсинг img из RSS-ленты с использованием PHP SIMPLE HTML DOM Parser

0

Я пытаюсь разобрать этот сайт (чтобы получить img-link): http://statigr.am/feed/parishilton

Это мой код:

include 'parse/simple_html_dom.php';

// Create DOM from URL or file
$html = file_get_html('http://statigr.am/feed/parishilton/');

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

Сценарий ничего не возвращает! Почему это? Я хочу ссылку img.

Теги:
image
dom
parsing

1 ответ

0

Это потому, что все изображения находятся внутри секции CDATA и синтаксический анализатор игнорирует ее, поэтому решение

$html = file_get_html('http://statigr.am/feed/parishilton/');
$html = str_replace("<![CDATA[","",$html); // clean-up
$html = str_replace("]]>","",$html); // clean-up
$html = str_get_html($html); // re-construct the dom object
// Loop
foreach($html->find('item description img') as $el)
{
    echo $el->src . "<br />";
}

Замените все CDATA из возвращаемого содержимого, а затем используйте str_get_html для создания объекта DOM из этой строки и str_get_html изображений. (Протестировано и работает).

Вывод :

http://distilleryimage3.s3.amazonaws.com/cc25d8562c9611e3a8b922000a1f8ac2_8.jpg
http://distilleryimage7.s3.amazonaws.com/4d8e22da2c8911e3a6a022000ae81e78_8.jpg
http://distilleryimage5.s3.amazonaws.com/ce6aa38a2be711e391ae22000ae9112d_8.jpg
http://distilleryimage3.s3.amazonaws.com/d64ab4c42bc811e39cbd22000a1fafdb_8.jpg
......
......
  • 0
    Спасибо! И как мне сделать, если я хочу, чтобы ссылка, описание и время публикации были в одном массиве? Вывод: 1. ссылка: описание бла: xx время: xx 2. описание ссылки: xx время: xx
  • 0
    foreach($html->find('item') as $el) { echo $el->find('description img', 0)->src . "<br />"; echo $el->find('link', 0)->innertext . "<br />"; echo $el->find('pubDate', 0)->innertext . "<br />"; }
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню