Я только начинаю с упомянутого Парсера и как-то бегаю по проблемам непосредственно с самого начала.
Ссылаясь на этот учебник:
http://net.tutsplus.com/tutorials/php/html-parsing-and-screen-scraping-with-the-simple-html-dom-library/
Я хочу теперь просто найти в исходном коде содержимое div с классом ClearBoth Box
Я извлекаю код с помощью curl и создаю простой объект html dom:
$cl = curl_exec($curl); $html = new simple_html_dom(); $html->load($cl);
Затем я хотел добавить содержимое div в массив с именем divs:
$divs = $html->find('div[.ClearBoth Box]');
Но теперь, когда я печатаю_r $ divs, он дает гораздо больше, несмотря на то, что исходный код не имеет больше внутри div.
Как это:
Array ( [0] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => br [attr] => Array ( [class] => ClearBoth ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => div [attr] => Array ( [class] => SocialMedia ) [children] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => iframe [attr] => Array ( [id] => ShowFacebookButtons [class] => SocialWeb FloatLeft [src] => http://www.facebook.com/plugins/xxx [style] => border:none; overflow:hidden; width: 250px; height: 70px; ) [children] => Array ( ) [nodes] => Array ( )
Я не понимаю, почему $ divs не просто код из div?
Вот пример исходного кода на сайте:
<div class="ClearBoth Box"> <div> <i class="Icon SmallIcon ProductRatingEnabledIconSmall" title="gute peppige Qualität: Sehr empfehlenswert"></i> <i class="Icon SmallIcon ProductRatingEnabledIconSmall" title="gute peppige Qualität: Sehr empfehlenswert"></i> <i class="Icon SmallIcon ProductRatingEnabledIconSmall" title="gute peppige Qualität: Sehr empfehlenswert"></i> <i class="Icon SmallIcon ProductRatingEnabledIconSmall" title="gute peppige Qualität: Sehr empfehlenswert"></i> <i class="Icon SmallIcon ProductRatingEnabledIconSmall" title="gute peppige Qualität: Sehr empfehlenswert"></i> <strong class="AlignMiddle LeftSmallPadding">gute peppige Qualität</strong> <span class="AlignMiddle">(17.03.2013)</span> </div> <div class="BottomMargin"> gute Verarbeitung, schönes Design, </div> </div>
Что я делаю не так?
Правильный код для получения div с классом:
$ret = $html->find('div.foo'); //OR $ret = $html->find('div[class=foo]');
В основном вы можете получить элементы, поскольку вы использовали селектор CSS.
источник: http://simplehtmldom.sourceforge.net/manual.htm
Как найти элементы HTML? раздел, вкладка Дополнительно
$html = new simple_html_dom(); $html->load($output); $items = $html->find('div.youclassname',0)->children(1)->outertext; print_r($items);