在非对象simpleHTMLDOM上调用成员函数find()

时间:2012-09-09 03:36:47

标签: php simple-html-dom

我正在尝试从一个页面读取链接,打印URL,转到该页面,然后在同一位置读取下一页上的链接,打印网址,转到该页面(依此类推...... )。

我正在做的就是读取URL并将其作为参数传递给get_links()函数,直到没有更多链接为止。

这是我的代码,但它会抛出:

Fatal error: Call to a member function find() on a non-object. 

任何人都知道如何解决这个问题?

  <?php
$mainPage = 'https://www.bu.edu/link/bin/uiscgi_studentlink.pl/1346752597?ModuleName=univschr.pl&SearchOptionDesc=Class+Subject&SearchOptionCd=C&KeySem=20133&ViewSem=Fall+2012&Subject=&MtgDay=&MtgTime=';

get_links($mainPage);

function get_links($url) {
    $data = new simple_html_dom();
    $data = file_get_html($url);

    $nodes = $data->find("input[type=hidden]");
    $fURL = $data->find("/html/body/form");
    $firstPart = $fURL[0]->action . '<br>';

    foreach ($nodes as $node) {
        $val = $node->value;
        $name = $node->name;
        $name . '<br />';
        $val . "<br />";

        $str1 = $str1 . "&" . $name . "=" . $val;
    }
    $fixStr1 = str_replace('&College', '?College', $str1);
    $fixStr2 = str_replace('Fall 2012', 'Fall+2012', $fixStr1);
    $fixStr3 = str_replace('Class Subject', 'Class+Subject', $fixStr2);

    $fixStr4 = $firstPart . $fixStr3;
    echo $nextPageURL = chop($fixStr4);
    get_links($nextPageURL);
}
?>

1 个答案:

答案 0 :(得分:0)

好吧,所以我在我的代码中的某个地方使用了load->file()函数,直到我真正理解它才看到它。最后有一个正在运行的脚本:)关键是使用file_get_html而不是使用load->file()函数将网页加载为对象。