2012-06-24 3 views
0

Я новичок в выборке, в коде, где он говорит div[class="movies]/div/a Я пытаюсь извлечь все теги с/а после DIV он только Fetching только один, плз помочь мне понять, как извлечь все ,Simple Html DOM принести XPath

Благодаря

<?php 
include_once('../../simple_html_dom.php'); 

function scraping_IMDB($url) { 
    // create HTML DOM 
    $html = file_get_html($url); 

    // get title/ 
    $ret['Title'] = $html->find('**div[class="movies]/div/a**', 0)->innertext; 

    // get rating 
    $ret['Rating'] = $html->find('div[class="DataWhite"] b', 0)->innertext; 

    // get overview 
    foreach($html->find('div[class="DataWhite"]') as $div) { 
     // skip user comments 
     if($div->find('h5', 0)->innertext=='User Comments:') 
      return $ret; 

     $key = ''; 
     $val = ''; 

     foreach($div->find('*') as $node) { 
      if ($node->tag=='h5') 
       $key = $node->plaintext; 
      if ($node->tag=='a' && $node->plaintext!='more') 
       $val .= trim(str_replace("\n", '', $node->plaintext)); 

      if ($node->tag=='text') 
       $val .= trim(str_replace("\n", '', $node->plaintext)); 
     } 

     $ret[$key] = $val; 
    } 

    // clean up memory 
    $html->clear(); 
    unset($html); 

    return $ret; 
} 


// ----------------------------------------------------------------------------- 
// test it! 
$ret = scraping_IMDB('http://www.tastekid.com/like/The+Help/movies'); 

foreach($ret as $k=>$v) 
    echo '<strong>'.$k.' </strong>'.$v.'<br>'; 
?> 

ответ

0

Я не 100% ясно, что код должен быть, но это «0», что это проблема.

// get title/ 
$ret['Title'] = $html->find('**div[class="movies]/div/a**', 0)->innertext; 

в

// get title/ 
$ret['Title'] = $html->find('**div[class="movies]/div/a**')->innertext; 

Найдет все из дивы с 'кино' класса. Потому что, когда у вас есть «, 0», он найдет только первое. Затем вам потребуется выполнить итерацию по выходному значению, как это делается с объектами класса DataWhite.

+1

Нет, я тоже устал. не похоже на tht является проблемой
Кстати, это оригинальный код
'$ ret ['Title'] = $ html-> find ('** div [class =" movies]/div/a **', 0) -> InnerText; ' –

Смежные вопросы