0

私はdiv[class="movies]/div/a フェッチするのが初めてです.divの後に/ aですべてのタグをフェッチしようとしていると書かれているコードでは、1つだけをフェッチしています.plzはすべてをフェッチする方法を理解するのに役立ちます.

ありがとう

<?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>';
?>
4

1 に答える 1

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;

これにより、クラス'movies'のすべてのdivが検索されます。あなたが"、0"を持っているとき、それは最初のものだけを見つけるからです。次に、DataWhiteクラスオブジェクトで行われるように、この出力を繰り返す必要があります。

于 2012-06-29T14:45:15.683 に答える