Вызов функции-члена find() для простогоHTMLDOM, не являющегося объектом

Я пытаюсь прочитать ссылку с одной страницы, распечатать URL-адрес, перейти на эту страницу и прочитать ссылку на следующей странице в том же месте, распечатать 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);
}
?>

person wandersolo    schedule 09.09.2012    source источник
comment
Кроме того, я получаю правильное эхо $nextPageURL, поэтому я знаю, что код работает, но только для первой страницы.   -  person wandersolo    schedule 09.09.2012
comment
Это звучит смутно знакомо этот вопрос...   -  person David    schedule 09.09.2012
comment
Он выдает ту же ошибку, но в этом случае я использую метод file_get_html(). Также я думаю, что это проблема с рекурсией, но я не уверен?   -  person wandersolo    schedule 09.09.2012
comment
Это может быть вашей проблемой - простой, но это может быть так.   -  person David    schedule 09.09.2012
comment
Я импортировал библиотеку simple_html_dom.php, просто не скопировал ее в код здесь. Также это определенно не так, поскольку моя функция работает хотя бы один раз.   -  person wandersolo    schedule 09.09.2012
comment
По-видимому, это ошибка. Попробуйте использовать что-то вроде PHPQuery, что, по моему опыту, намного лучше.   -  person David    schedule 09.09.2012
comment
давайте продолжим это обсуждение в чате   -  person wandersolo    schedule 09.09.2012


Ответы (1)


Итак, я использовал функцию load->file() где-то в своем коде и не видел ее, пока не прошерстил ее по-настоящему. Наконец-то у вас есть работающий скрипт :) Ключ в том, чтобы использовать file_get_html вместо загрузки веб-страницы как объекта с помощью функции load->file().

person wandersolo    schedule 10.09.2012